Django – Admin管理模块的使用

Djang自身集成了管理后台,在管理后台中可以对我们自定义model进行CRUD操作,也能进行列表展示解析,分页等等。

准备

先创建一个项目test_p,在项目中创建应用testapp,将项目配置这些配置好。

创建一个model

在应用文件目录下的models.py 中创建StudentGrade 两个Model。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from django.db import models

# Create your models here.


class Grade(models.Model):
name = models.CharField(max_length=10, null=False)

create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now_add=True, auto_now=True)


class Student(models.Model):
name = models.CharField(max_length=20, null=False)
gender = models.BooleanField(default=True)
age = models.IntegerField()
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now_add=True, auto_now=True)

grade = models.ForeignKey(Grade)

admin管理后台的url

在项目文件目录下可以看到路由配置文件urls.py中有一个admin的url地址

1
2
3
4
5
6
from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
url(r'^admin/', admin.site.urls),
]

创建admin后台的用户密码

在创建用户之前,先要在终端中使用命令迁移数据库。点击IDE最下方的Terminal,进入终端,先检查虚拟环境是否正确,若不正确,先配置虚拟环境。

在终端中输入命令:

python manage.py makemigrations 生成迁移文件

python manage.py migrate 执行迁移文件

数据库迁移成功后,开始创建用户,命令如下:

python manage.py createsuperuser 创建超级用户

接着要填写用户名、邮箱、密码、确认密码。如图:

Admin——创建用户
Admin——创建用户

创建用户名成功之后,在浏览器中输入 127.0.0.1:8000/admin/localhost:8000/admin/ 进行登录。

在管理后台中管理模型对象

需要在应用文件目录下的admin.py 文件中注册要进行管理的Model。

1
2
3
4
# admin.site.register(模型名)

admin.site.register(Grade)
admin.site.register(Student)

当然也可以继承admin.ModelAdmin,编写自己的admin,来自定义Model的后台管理展示界面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class StudentAdmin(admin.ModelAdmin):
def set_gender(self):
if self.gender:
return '男'
else:
return '女'

set_gender.short_description = '性别'
list_display = ['id', 'name', set_gender]
list_filter = ['gender']
search_fields = ['name']
list_per_page = 10


admin.site.register(Student, StudentAdmin)

说明:

short_description :表示此字段在界面显示的名称

list_display :表示需要显示的字段

list_filter :表示可以进行过滤的字段

search_fields :表示可以进行搜索的字段

list_per_page :表示分页的条数

ordering :表示排序的字段

界面显示如下:

Admin——Model管理界面
Admin——Model管理界面

此外,还可以使用装饰器来实现自定义Model的后台管理展示界面。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# @admin.register(模型名)
@admin.register(Student)
class StudentAdmin(admin.ModelAdmin):
def set_gender(self):
if self.gender:
return '男'
else:
return '女'

set_gender.short_description = '性别'
list_display = ['id', 'name', set_gender]
list_filter = ['gender']
search_fields = ['name']
list_per_page = 10