Django - admin后台、auth权限
admin后台
一、创建一个管理员用户
(1).设置时区、语言(可选步骤)
打开settings.py,改成下面那样
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
(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)
三、自定义管理页面
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
)
(2).在该模型的app中的admin.py
# -----------admin.py--------
from django.contrib import admin
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)
auth权限
一、使用视图方式创建一个超级用户
from django.contrib.auth.models import User
User.objects.create_user(username="yyyyyy",password="yyyyyy",email="xxx@yyy.com")
二、用户User操作
(一).验证用户
不需要再用之前的filter().first()方式了,直接用django封装好的authenticate()
from django.contrib.auth import authenticate
user = authenticate(username=username,password=password)
authenticate这个单词的本意就是“证明…是真实的”
(二).保持登录状态
接上面(一)的验证代码,使用django的login(request,user)
if user is not None:
if user.is_active:
login(request, user)
# 登录成功
else:
# 用户没有被激活,不能登录
else:
# 用户名或者密码错误
Ps:request这个参数必须写上
(三).注销
直接logout(request)
from django.contrib.auth import logout def logout_view(request):
logout(request)
# 注销这个用户。他的session信息将被清除掉。
(四).操作前的验证判断
比如说,购买之前必须要登录,没有登录就不能购买。那么就用django自带的装饰器,装饰一下。
在具体的某个视图函数上面加上装饰器,例:
from django.contrib.auth.decorators import login_required @login_required # 这是一个装饰器
def my_view(request):
...
这样之后,操作这个my_view()业务逻辑之前,都会判断下是否有登录,没有登录就执行其他操作。
(五).User模型常用属性和方法
- username:用户名。
- email:邮箱。
- groups:多对多的组。
- user_permissions:多对多的用户权限。
- is_staff: 是否是admin的管理员。
- is_active: 是否激活,判断该用户是否可用。
- is_superuser: 是否是超级用户。
- last_login: 上次登录时间。
- date_joined: 注册时间。
- is_authenticated: 是否验证通过了。
- is_anonymous:是否是匿名用户。
- set_password(raw_password): 设置密码,传原生密码进去。
- check_password(raw_password): 检查密码。
- has_perm(perm): 判断用户是否有某个权限。
- has_perms(perm_list): 判断用户是否有权限列表中的某个列表
三、Permission权限模型
(一).在模型中添加权限
from django.db import models class BlogModel(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=100,blank=True)
content = models.TextField() class Meta:
permissions = (
('watch_article', u'查看文章的权限'),
('update_article', u'修改文章的权限'),
('delete_article', u'删除文章的权限'),
('add_article', u'发布文章的权限'),
)
(二).在代码中添加权限
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType def test(request):
content_type = ContentType.objects.get_for_model(BlogModel)
permission = Permission.objects.create(
codename='can_publish',
name='Can Publish BlogModel',
content_type=content_type,
)
permission.save()
return HttpResponse('success')
(三).用户权限操作
myuser.user_permissions.set([permission_list])
myuser.user_permissions.add(permission, permission, ...)
myuser.user_permissions.remove(permission, permission, ...)
myuser.user_permissions.clear()
myuser.has_perm('foo.add_bar')
四、Group模型
(一).导包
django.contrib.auth.models.Group
(二).创建Group
b1 = Group.objects.create(name="user_can_write_blog")
b1.save()
注意:必须传一个name参数进去
(三).示例
group.permissions.set([permission_list])
group.permissions.add(permission, permission, ...)
group.permissions.remove(permission, permission, ...)
group.permissions.clear()
Django - admin后台、auth权限的更多相关文章
- django博客项目6:Django Admin 后台发布文章
在此之前我们完成了 Django 博客首页视图的编写,我们希望首页展示发布的博客文章列表,但是它却抱怨:暂时还没有发布的文章!如它所言,我们确实还没有发布任何文章,本节我们将使用 Django 自带的 ...
- Django Admin后台添加用户时出现报错:1452
如果在使用Django Admin后台添加用户时出现报错: (1452, 'Cannot add or update a child row: a foreign key constraint fai ...
- Django Admin后台管理模块的使用
Admin后台管理模块的使用 Django的管理员模块是Django的标准库django.contrib的一部分.这个包还包括其它一些实用的模块: django.contrib.auth django ...
- django admin后台插件:django-suit入门
去年9月底开始用django来做公司内部项目,开始对django有了一些了解,感觉django真的蛮强大的(也有很多人推荐flask,将来有空的话我会试试).今天的话只是介绍一个小东西,django管 ...
- django admin后台的简单使用
创建自己的model.py文件 from django.db import models from django.contrib.auth.models import ( BaseUserManage ...
- Django admin 后台管理
在App 文件夹下的 admin.py 文件中写入 from django.contrib import admin from app名 import models admin.site.site_h ...
- Django Admin后台管理功能使用+二次开发
一 使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7 (Windows x86-64 executable in ...
- Django admin后台操作
Django提供自动后台管理应用,简称admin. admin是一个应用,每个Web站点都需要它.admin通过让开发者可以在完成完整的UI之前验证处理数据的代码. 设置admin 打开setting ...
- Django Admin 后台Admin继承UserAdmin增加用户密码不显示明文和用户登录不了的解决方法
Django后台Admin继承UserAdmin增加用户不显示明文方法 1.在 models.py 中用户表 # 导包规范-1.Python标准模块 from django.db import mod ...
随机推荐
- linux route命令使用
说明:route命令是打印和操作ip路由表描述:route操作基于内核ip路由表,它的主要作用是创建一个静态路由让指定一个主 机或者一个网络通过一个网络接口,如eth0.当使用"add&qu ...
- Linux内核project导论——网络:路由:路由原理
总览 路由表 IP层通过路由将数据包送达该送达的目的地址,这就要求在整个网络中建立正确的路由表.路由表的内容是记录要到达哪里下一跳须要发到哪里(能够是port能够是ip),如此整个网络在单个节点仅仅知 ...
- 【MySQL】设置字符集UTF-8(解决)
1.检查你需要的字符集,GBK或者UTF8 2.数据库是否是UTF8, 3.数据表是否是UTF8 4.模板是否设置了UTF-8 以上都没设置错误,那么继续往下看: 进入目标数据库,使用语句: SHOW ...
- Mac 下安装Ruby环境(转)
步骤1 - 安装 RVM RVM 是干什么的这里就不解释了,后面你将会慢慢搞明白. $ curl -L https://get.rvm.io | bash -s stable 期间可能会问你sudo管 ...
- 数据库表syscolumns 各个字段含义 select * from syscolumns where name='textA'
每个数据库创建后都会有一些系统表用来存储该数据库的一些基本信息 每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行.该表位于每个数据库中. 列名 数据类型 描述 name sysna ...
- Asp.net2.0里的SessionPageStatePersister
备注: ASP.NET 页可在处理和提供任何网页所必需的原本无状态 HTTP 请求与响应之间存储 Page 状态信息.此状态称为“视图状态”. ASP.NET 的默认持久性机制是使用 HiddenFi ...
- 在Linux下如何查CC攻击?
什么是CC攻击?CC攻击就是利用大量代理服务器对目标计算机发起大量连接,导致目标服务器资源枯竭造成拒绝服务.那么如何判断查询CC攻击呢?本文主要介绍了一些Linux下判断CC攻击的命令. AD:201 ...
- atitit.验证码识别step4--------图形二值化 灰度化
atitit.验证码识别step4--------图形二值化 灰度化 1. 常见二值化的方法原理总结 1 1.1. 方法一:该方法非常简单,对RGB彩色图像灰度化以后,扫描图像的每个像素值,值小于12 ...
- DirectShow中写push模式的source filter流程 + 源码(内附具体凝视)
尽管网上已有非常多关于DirectShow写source filter的资料.只是非常多刚開始学的朋友总说讲的不是非常清楚(可能当中作者省略了很多他觉得简 单的过程).读者总希望看到象第一步怎么做,第 ...
- ActiveMQ从源代码构建
众多开源项目.我们一般都是直接拿过来用之而后快. 只是我们也应该知道这些项目是怎样从源代码构建而来的. 既然代码是写出来的,就不能避免有BUG存在,话说没有完美的软件,也没有无漏洞的程序. 事实上从源 ...