使用Django搭建一个博客系统4——创建后台管理站点

后台管理主要是针对blog目录下的**admin.py文件进行编辑,但是要发布博客文章,必须先创建超级管理员

一、创建超级管理员

1、cmd命令,跳转到一级目录mysite下。运行命令:

python manage.py createsuperuser

用户名:admin
Email:可以不写
密码:Pass1234

Superuser Created successfully.创建成功

2、测试一下看看
一级目录mysite下,用cmd命令,运行Django服务。
默认为8000端口,但是这个端口跟酷狗冲突,我们可以自主选择一个8080端口

python manage.py runserver 8080

报错[winError 10013],意思是端口被占用

3、浏览器中输入网址,打开后台:

http://127.0.0.1:8080/admin/

此时后台中,只有用户管理界面。
注意:Group和User模型(models)位于,django.contrib.auth中,
是django 权限管理档案中的一部分。
Users中可以看到之前创建的用户信息。blog应用中的models.py文件下的Post类(也是Post表,上一节课刚创建的那个),跟它总是关联在一起。通过author外键。

二、管理站点中注册Post类

blog目录下的***admin.py***文件进行编辑

from django.contib import admin#默认就这一句
from .models import Post#导入本路径下models.py文件中的Post类,第三课刚创建的,models前边加个点
admin.site.register(Post)#注册Post类

此时在后台中显示blog项目,可以发布信息了。但是发布后,显示的不是标题名,而是Post Object
修正方法:需要在第三课中,blog文件夹下的,models.py文件的Post类中增加一个方法

def __Str__(self):
	return self.title

注意:添加文章时,slug必须不同,不同文章指向不同的url地址

三、为模型类在后台定制功能

修改文件夹blog中的admin.py文件
1、admin.py文件中,添加一个类,这个类要添加在from下边,admin.site.register上边

用于制定在后台中显示文章的哪些内容?

class PostAdmin(admin.ModelAdmin):#

# > ModelAdmin是admin中自带的模块,应该是控制管理员的,如果想增加用户,修改管理员权限,应该在这里吗?

	list_display=('title','slug','auther','publish','status')#定义要显示的字段。
	list_filter=('status','created','publish')#定义右侧菜单栏
	search_fields=('title','body')#定义搜索框,根据标题和内容查找
	prepopulated_fields={'slug':('title',)}#根据标题,预填充标识。('title',)这是个元组,后边有逗号。
	#> prepopulated_fields,这个东西有啥用啊?
	raw_id_fields=('author',)#添加一个搜索控件,添加文章时可以直接选作者填上
	date_hierarchy='publish'#添加一个时间层的快速导航栏
	ordering=['status','publish']#作一个排序,按照状态和时间排序

2、将刚添加的类在后台注册一下,在admin.py文件中修改admin.site.register(Post)

admin.site.register(Post,PostAdmin)#注册Post和PostAdmin

四、完成的admin.py内容

from django.contib import admin#默认就这一句
from .models import Post#导入本路径下models.py文件中的Post类,第三课刚创建的,models前边加个点

class PostAdmin(admin.ModelAdmin):
	list_display=('title','slug','auther','publish','status')#定义要显示的字段。
	list_filter=('status','created','publish')#定义右侧菜单栏
	search_fields=('title','body')#定义搜索框,根据标题和内容查找
	prepopulated_fields={'slug':('title',)}#根据标题,预填充标识。('title',)这是个元组,后边有逗号。
	#> prepopulated_fields,这个东西有啥用啊?
	raw_id_fields=('author',)#添加一个搜索控件,添加文章时可以直接选作者填上
	date_hierarchy='publish'#添加一个时间层的快速导航栏
	ordering=['status','publish']#作一个排序,按照状态和时间排序

admin.site.register(Post,PostAdmin)#注册Post和PostAdmin

五、admin.py 相关总结

定制后台功能,就是在admin.py中添加一个类(这里是PostAdmin),所有功能属性都添加在这个类中,最后将类注册进后台即可。

model定制管理后台:改的主要是blog文件夹下的admin.py文件,属性就是一个个的元组。
书写规则:
list_display——定义要显示的字段
list_filter——过滤菜单(右侧)
search_fields——搜索框
prepopulated_fields——预填充(根据标题填标识,url)
raw_id_fields——搜索控件
date_hierarchy——时间层的快速导航栏
ordering——列表类型,做一个排序

你可能感兴趣的:(python,django)