Django - admin后台auth权限

Posted quanquan616

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django - admin后台auth权限相关的知识,希望对你有一定的参考价值。

admin后台篇

 

一、创建一个管理员用户

(1).设置时区、语言(可选步骤)

打开settings.py,改成下面那样

技术分享图片
LANGUAGE_CODE = zh-Hans
TIME_ZONE = Asia/Shanghai
View Code

(2).执行命令python manage.py createsuperuser

(3).按提示输入用户名、邮箱、密码(密码至少需要8位)

(4).启动服务,访问 127.0.0.1:8000/admin 即可进入站点管理

 

二、向admin注册模型

技术分享图片
#----------admin.py---------
from django.contrib import admin
# Register your models here.
from .models import Department,Student,Course

admin.site.register(Department)
admin.site.register(Student)
admin.site.register(Course)
View Code

 

三、自定义管理页面

Django提供了admin.ModelAdmin类通过定义ModelAdmin的子类,来定义模型在Admin界面的显示方式

(一).列表页属性

(1).list_display:显示字段,可以点击列头进行排序

(2).list_filter:过滤字段,过滤框会出现在右侧

(3).search_fields:搜索字段,搜索框会出现在上侧

(4).list_per_page:分页,分页框会出现在下侧

(二).示例

(1).先写好模型

技术分享图片
#-----models.py------
class Department(models.Model):
    d_id = models.AutoField(primary_key=True)
    d_name = models.CharField(max_length=30)
    def __str__(self):
        return Department<d_id=%s,d_name=%s>%(
            self.d_id,self.d_name
        )

class Student(models.Model):
    s_id = models.AutoField(primary_key=True)
    s_name = models.CharField(max_length=30)
    department = models.ForeignKey(Department)
    course = models.ManyToManyField(Course)
    def __str__(self):
        return Student<s_id=%s,s_name=%s>%(
            self.s_id,self.s_name
        )


class Course(models.Model):
    c_id = models.AutoField(primary_key=True)
    c_name = models.CharField(max_length=30)
    def __str__(self):
        return Course<c_id=%s,c_name=%s>%(
            self.c_id,self.c_name
        )
View Code

(2).在该模型的app中的admin.py

技术分享图片
# -----------admin.py--------
from django.contrib import admin

# Register your models here.
from .models import Department,Student,Course

class DepartmentAdimin(admin.ModelAdmin):
    list_display = [d_id,d_name]
    list_display_links = [d_id,d_name]
    list_filter = [d_id]
    search_fields = [d_name]

class StudentAdimin(admin.ModelAdmin):
    list_display = [s_id,s_name]
    list_display_links = [s_id,s_name]

class CourseAdmin(admin.ModelAdmin):
    list_display = [c_id,c_name]
    list_display_links = [c_id,c_name]
    list_per_page = 5

admin.site.register(Department,DepartmentAdimin)
admin.site.register(Student,StudentAdimin)
admin.site.register(Course,CourseAdmin)
View Code

  


 

 

auth权限篇 

 

一、使用视图方式创建一个超级用户

技术分享图片
from django.contrib.auth.models import User
User.objects.create_user(username="yyyyyy",password="yyyyyy",email="[email protected]")
View Code

 

 

二、验证用户

不需要再用之前的filter().first()方式了,直接用django封装好的方法

技术分享图片
from django.contrib.auth import authenticate
user = authenticate(username=username,password=password)
View Code

 

以上是关于Django - admin后台auth权限的主要内容,如果未能解决你的问题,请参考以下文章

Django 13 admin和auth系统权限问题

Django admin后台操作

修改django 后台admin用户的密码

django 之admin后台管理

Django权限系统:auth

Django权限系统auth模块详解