这篇文章主要介绍了python注册用户名和密码登录,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。
Source code download: 本文相关源码
之前运行 django-admin startproject newweb 时,Django 为我们创建并配置了默认的管理后台。我们 只需创建一个管理员用户(超级用户),就可以登录管理后台GPT改写。
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”为用户赋予所有权限,可以在管理界面中添加、编辑和删除任何对象。如果勾选,用户的常规权限不再考虑。
“普通的”管理员,即已激活且不是超级用户,所具有的管理权限是一项项赋予的。可在管理界面中编辑的对象有三个权限:创建权限、编辑权限和删除权限。为用户赋予权限就是允许用户执行相应的操作。新建的用户没有任何权限,如果需要特定权限,要由超级管理员赋予。
用户还可以分组。一个分组中的所有成员都有那一组具有的全部权限。使用分组便于为多个用户赋予相同的权限。