站点分为后台(网站内容管理)和前台(公共访问两部分),后台部分由网站的管理员负责查看、添加、修改、删除数据,开发这些重复的功能是一件单调乏味、缺乏创造力的工作,为此,Django能够根据定义的模型类自动地生成管理模块.
使用Django的管理模块,需要按照如下步骤操作:
1. 管理界面本地化;
2. 创建管理员;
3. 注册模型类;
4. 自定义管理页面.1. 管理界面本地化
本地化是将显示的语言、时间等使用本地的习惯,这里的本地化就是进行中国化,中国大陆地区使用简体中文,时区使用亚洲/上海时区,注意这里不使用北京时区表示.打开项目django_news_day01/settings.py文件,找到语言编码、时区的设置项,将内容改为如下:
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai
2. 创建管理员
既然要登录网站管理后台,那么就需要先创建登录账号和密码。创建管理员的代码如下,按提示输入用户名、邮箱、密码:
python manage.py createsuperuser
启动服务器:
python manage.py runserver
打开浏览器,在地址栏中输入如下地址后回车:
http://127.0.0.1:8000/admin
输入前面创建的用户名、密码完成登录:
登录成功后界面如下,但是并没有新闻分类、新闻列表的管理入口,接下来进行第三步操作.
3. 注册模型类
将我们自定义的模型类注册到后台进行管理。
登录后台管理后,默认没有我们创建的应用中定义的模型类,需要在自己应用中的admin.py文件中注册,才可以在后台管理中看到,并进行crud操作.
打开app/admin.py文件,编写如下代码:
from django.contrib import admin
# Register your models here.
from .models import NewsList, NewsCategory
# 注册自定义模型类
admin.site.register(NewsList)
admin.site.register(NewsCategory)
刷新页面,可以看到模型类NewsList和NewsCategory的管理了, 但默认只有一列,显示的是str方法返回的值.
4. 自定义管理界面
Django提供了自定义管理页面功能,比如列表页要显示哪些字段值.
打开app/admin.py文件,自定义类继承自admin.ModelAdmin类, 属性list_display表示要显示哪些属性.
from django.contrib import admin
from .models import NewsCategory, NewsInfo
class NewsCategoryAdmin(admin.ModelAdmin):
# 新闻分类信息显示那些字段信息
list_display = ["id", "cag_name"]
class NewsInfoAdmin(admin.ModelAdmin):
# 新闻信息显示那些字段信息
list_display = ["id", "news_title", "news_summary", "news_contents", "news_time", "news_cag"]
# 注册model类
admin.site.register(NewsCategory, NewsCategoryAdmin)
admin.site.register(NewsInfo, NewsInfoAdmin)