阅读:47
项目全文索引
站点大类
站点分类
站点信息
应用创建
CMD 命令行创建导航数据应用,并将创建好的应用文件夹移动到 apps 下即可。
cd SiteNavigation
python manage.py startapp DataSettings
应用配置
在 settings.py 中添加应用名称到 INSTALLED_APPS 。
INSTALLED_APPS = [
...
'DataSettings',
其他文件
依据项目需求进行开发数据模型应用。
# coding:utf-8
__author__ = 'Mr.数据杨'
__explain__ = '网站应用模型设置'
from django.db import models
# 导航一级分类
class Category(models.Model):
# 模型私有部分
name = models.CharField(
max_length=30,
verbose_name='导航一级分类', help_text="导航一级分类名称"
)
class Meta:
verbose_name = '文章一级大类管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# 导航二级栏目
class Item(models.Model):
# 模型私有部分
category = models.ForeignKey(
Category,
on_delete=models.CASCADE, related_name='CategoryItem',
verbose_name="导航一级分类", help_text="导航一级分类名称"
)
name = models.CharField(
max_length=30,
verbose_name="导航二级栏目", help_text="文章二级栏目名称"
)
class Meta:
verbose_name = '文章二级栏目管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
# 导航具体明细
class SiteInfo(models.Model):
item = models.ForeignKey(
Item,
related_name='ArticleInfoItem', on_delete=models.CASCADE,
verbose_name="导航二级栏目", help_text="文章二级栏目名称"
)
name = models.CharField(
max_length=100, default="",
verbose_name='网站名称', help_text="网站名称"
)
description = models.TextField(
verbose_name='网站描述', help_text="网站描述"
)
url = models.URLField(
verbose_name='网站连接', help_text="网站连接"
)
logo = models.ImageField(
upload_to='SiteLogo', default='SiteLogo/default.png',
verbose_name='网站图标', help_text="网站图标",
null=True, blank=True
)
click_num = models.IntegerField(
verbose_name='点击次数', help_text="点击次数"
)
class Meta:
verbose_name = '站点明细管理'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
依据项目需求进行开发数据模型应用管理。
# -*- coding: utf-8 -*-
__author__ = 'Mr数据杨'
__explain__ = '应用 Adminx 后台管理控制配置'
from .models import *
import xadmin
from xadmin import views
# 全局设置
class BaseSetting(object):
# 启用后台主题
enable_themes = True
# 切换主题模式
use_bootswatch = True
# 菜单设置
class GlobalSettings(object):
# 设置站点标题
site_title = "网站导航后台管理"
# 设置站点的页脚
site_footer = "Mr数据杨制作"
# 设置默认导航菜单折叠
menu_style = "accordion"
def get_site_menu(self):
SiteInfoMenu = {'title': '站点数据管理', 'icon': 'fa fa-file-text', 'menus': (
{'title': '站点大类', 'icon': 'fa fa-file-o', 'url': self.get_model_url(Category, 'changelist')},
{'title': '站点分类', 'icon': 'fa fa-file-o', 'url': self.get_model_url(Item, 'changelist')},
{'title': '站点信息', 'icon': 'fa fa-file-o', 'url': self.get_model_url(SiteInfo, 'changelist')},
)}
return (
SiteInfoMenu,
)
class CategoryAdmin(object):
list_display = [
'name', 'item_count'
]
show_bookmarks = False
# 统计每个Category下的Item数
def item_count(self, obj):
return Item.objects.filter(category=obj).count()
# 定义统计列的字段名称
item_count.short_description = "分类数量"
class ItemAdmin(object):
list_display = [
'category', 'name', 'site_info_count'
]
show_bookmarks = False
# 统计每个Item下的文章数量
def site_info_count(self, obj):
return SiteInfo.objects.filter(item_id=obj).count()
# 定义统计列的字段名称
site_info_count.short_description = "站点数据"
class SiteInfoAdmin(object):
list_display = [
'item', 'name', 'description', 'click_num'
]
show_bookmarks = False
xadmin.site.register(views.CommAdminView, GlobalSettings) # 全局设置加载
xadmin.site.register(views.BaseAdminView, BaseSetting) # 注册主体风格切换
xadmin.site.register(Category, CategoryAdmin)
xadmin.site.register(Item, ItemAdmin)
xadmin.site.register(SiteInfo, SiteInfoAdmin)
依据项目需求进行开发数据模型视图管理。
# coding:utf-8
__author__ = 'Mr.数据杨'
__explain__ = '网站应用模型视图'
from django.shortcuts import render
from django.views.generic.base import View
from .models import *
class HomeIndex(View):
def get(self, request):
category_list = Category.objects.all()
item_list = Item.objects.all()
data_list = SiteInfo.objects.all()
return render(request, 'WebStackPage.github.io-master/my_index.html', {
'category_list': category_list,
'item_list': item_list,
'data_list': data_list,
})
# coding:utf-8
__author__ = 'Mr.数据杨'
__explain__ = '网站应用模型路由配置'
from django.urls import path
from .views import *
app_name = 'DataSettings'
urlpatterns = [
path('', HomeIndex.as_view(), name='HomeIndex'),
]
urlpatterns = [
......
path('', include('DataSettings.urls', namespace='DataSettings')),
]
执行常规CMD命令进行项目迁移。
python manage.py makemigrations # 迁移到我们数据库
python manage.py migrate # 同步到数据库