<学习笔记>从零开始自学Python-之-web应用框架Django( 七)Django管理后台

       之前运行 django-admin startproject newweb 时,Django 为我们创建并配置了默认的管理后台。我们 只需创建一个管理员用户(超级用户),就可以登录管理后台。

1.创建管理员账户

执行下述命令,创建一个管理员用户:

 python manage.py createsuperuser

输入想用的用户名,然后按回车键:

Username: admin

接下来会提示你输入电子邮件地址:

Email address: admin@newweb.com

最后,输入密码。密码要输入两次,第二次是对第一次的确认。

Password: **********
Password (again): *********
Superuser created successfully.

2.进入管理员后台

启动服务器:

python manage.py runserver

然后访问 http://127.0.0.1:8000/admin ,就可以看到管理后台

使用前面创建的账户登录,看到下面的界面

这里看到两种可编辑的内容:Groups(分组)和 Users(用户)。这是 Django 自带的身份验证框架 django.contrib.auth 提供的。

 Django 中每种数据都有一个修改列表和编辑表单。前者列出数据库中所有可用的对象,后者用于添加、修改 或删除数据库中的特定记录。

如果想编辑记录,点击右边的change按钮,进入记录可以进行各种编辑操作。

如果想删除记录,点击编辑表单左下角的“Delete”按钮。点击那个按钮后会显示确认页面,有时那个页面还会 显示要删除的依赖对象。

3.把模型添加到 Django 管理后台中

在之前的模型那一章,我们创建了class模型,现在我们进入class文件夹下,找到admin.py文件

在其中加入以下代码:

from django.contrib import admin

# Register your models here.

from .models import Student


admin.site.register(Student)

我们再去访问http://127.0.0.1:8000/admin,看到我们的模型Student已经被加入了管理后台

 点击Student右边的change按钮,看到我们现有的3个同学数据

点击第2个 Student object(2),可以看到具体的数据

在这里可以对各项数据进行修改,保存后就进入了数据库。

点击右上角的add Student按钮,可以增加一个学生记录

4.自定义字段的标注

在管理后台的编辑表单中,各个字段的标注根据模型中字段的名称生成。

生成方式很简单:把下划线替换成空格,再把第一个字母变成大写。例如,Student 模型中 name 字段对应的标注是“Name”。

然而,根据字段名称并不是总能生成好的标注,因此有时需要自定义。自定义标注的方式是为模型字段指定 verbose_name 参数。

例如,下述代码把 name字段的标注改为“姓名”,skill也不太好理解,把它改成“武功”:

name = models.CharField(max_length=20,verbose_name='姓名')
skill = models.IntegerField(default=100,verbose_name='武功')

我们再去后台点开一条学生的记录看看

这样是不是看起来清楚多了?

5.自定义 ModelAdmin 类 

Django 管理后台也提供了丰富的选项,可以定制处理具体模型的方式。这些选项在 ModelAdmin 类中,这些类包含特定管理后台实例中特定模型的配置。

5.1 自定义修改列表

默认情况下,修改列表显示 的是各个对象的 __str__() 方法返回的结果。

比如,我们为 Student对象定义了 __str__() 方法,显示姓名,再访问后台

Student的记录全部显示名字了,这样看起来直观多了 

5.2  ModelAdmin 子类

这个类 是定制管理后台的关键,其中最基本的一件事是指定修改列表页面显示的字段。

from django.contrib import admin
# Register your models here.
from .models import Student

class StudentAdmin(admin.ModelAdmin):
    list_display = ('name', 'sex', 'skill')

admin.site.register(Student,StudentAdmin)

这样再去后台,就能看到下面3个显示列表了:

 5.3 搜索框

在 StudentAdmin 类中添加 search_fields:

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('name', 'sex', 'skill')
    search_fields = ('name', 'skill')

刷新浏览器中的页面,应该会在页面顶部看到一个搜索框

这个搜索框可以搜索刚刚我们设置的字段 "name"  和 "skill" 。正如用户期待的那样,这个搜索框不 区分大小写,而且两个字段都搜索。

我们来搜一下数字100,得到了所有武功为100的同学名单,如果直接搜“黄蓉”,则可以搜到一条记录 “黄蓉”

5.4 过滤器

过滤器就是为搜索页面增加一些条件,下面为 Student 模型的修改列表页面添加一个年龄过滤器:

from django.contrib import admin
# Register your models here.
from .models import Student

class StudentAdmin(admin.ModelAdmin):
    list_display = ('name', 'sex', 'skill')
    search_fields = ('name', 'skill')
    list_filter = ('age',)



admin.site.register(Student,StudentAdmin)

 后台显示界面就会变成这样:

我们可以通过修改ording属性来指定过滤器的顺序,注意list_filter 和 ordering的参数必须为列表或元组,所以它们后面的逗号不可少。

from django.contrib import admin
# Register your models here.
from .models import Student

class StudentAdmin(admin.ModelAdmin):
    list_display = ('name', 'sex', 'skill')
    search_fields = ('name', 'skill')
    list_filter = ('age',)
    ordering=('-age',)



admin.site.register(Student,StudentAdmin)

 再去访问后台,可以看到学生的排列顺序发生了变化。

 5.5 自定义编辑表单

利用ModelAdmin 子类中的 fields 选项可以修改排列顺序,可以排除某些字段变为不可编辑

比如学生的姓名、年龄、性别这些基本属性应该不能随意更改的,所以排除出fields

from django.contrib import admin
# Register your models here.
from .models import Student

class StudentAdmin(admin.ModelAdmin):
    list_display = ('name', 'sex', 'skill')
    search_fields = ('name', 'skill')
    list_filter = ('age',)
    ordering=('-age',)
    fields = ('skill', 'score')




admin.site.register(Student,StudentAdmin)

再去访问后台,发现学生记录能修改的字段只有武功 和 score了,而且顺序是武功在前,score在后,改变了原来的顺序。

 但是要注意一个问题,如果用户使用这个不完整的表单添加新记录时,Django 会把其它字段默认设为 None,所以其它字段要指定 null=True 参数才可以输入。

6 用户、分组和权限

不同的环境需要不同的权限系统, 不是每个人都可以或应该是超级用户。Django 的管理后台也有权限系统,让你给特定用户赋予访问特定功能的权限。用户和权限 可以像其他对象一样在管理界面中编辑。

登录后台管理系统时默认的两个模型 groups 和 users 就是对应的分组和用户两个对象。

用户对象有一些标准的字段:用户名、密码、电子邮件和真实姓名。此外,还有一些字段用于定义允许用户在管理界面中做什么。

首先是三个布尔值旗标:

• “Active”控制是否激活用户。如果未勾选,即便用户使用有效的密码也无法登录。

• “Staff status”控制是否允许用户登录管理界面(即是否把用户当做组织中的一员)。因为这个用户系统也用于控制面向公众的网站(即前台),所以这个旗标对公开用户和管理员是有区别的。

• “Superuser status”为用户赋予所有权限,可以在管理界面中添加、编辑和删除任何对象。如果勾选,用户的常规权限不再考虑。

“普通的”管理员,即已激活且不是超级用户,所具有的管理权限是一项项赋予的。可在管理界面中编辑的对象有三个权限:创建权限、编辑权限和删除权限。为用户赋予权限就是允许用户执行相应的操作。新建的用户没有任何权限,如果需要特定权限,要由超级管理员赋予。

用户还可以分组。一个分组中的所有成员都有那一组具有的全部权限。使用分组便于为多个用户赋予相同的权限。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值