admin后台

一、创建一个管理员用户

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

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

  1. LANGUAGE_CODE = 'zh-Hans'
  2. TIME_ZONE = 'Asia/Shanghai'

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

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

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

二、向admin注册模型

  1. #----------admin.py---------
  2. from django.contrib import admin
  3. # Register your models here.
  4. from .models import Department,Student,Course
  5.  
  6. admin.site.register(Department)
  7. admin.site.register(Student)
  8. admin.site.register(Course)

三、自定义管理页面

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

(一).列表页属性

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

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

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

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

(二).示例

(1).先写好模型

  1. #-----models.py------
  2. class Department(models.Model):
  3. d_id = models.AutoField(primary_key=True)
  4. d_name = models.CharField(max_length=30)
  5. def __str__(self):
  6. return 'Department<d_id=%s,d_name=%s>'%(
  7. self.d_id,self.d_name
  8. )
  9.  
  10. class Student(models.Model):
  11. s_id = models.AutoField(primary_key=True)
  12. s_name = models.CharField(max_length=30)
  13. department = models.ForeignKey('Department')
  14. course = models.ManyToManyField('Course')
  15. def __str__(self):
  16. return 'Student<s_id=%s,s_name=%s>'%(
  17. self.s_id,self.s_name
  18. )
  19.  
  20. class Course(models.Model):
  21. c_id = models.AutoField(primary_key=True)
  22. c_name = models.CharField(max_length=30)
  23. def __str__(self):
  24. return 'Course<c_id=%s,c_name=%s>'%(
  25. self.c_id,self.c_name
  26. )

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

  1. # -----------admin.py--------
  2. from django.contrib import admin
  3. from .models import Department,Student,Course
  4.  
  5. class DepartmentAdimin(admin.ModelAdmin):
  6. list_display = ['d_id','d_name']
  7. list_display_links = ['d_id','d_name']
  8. list_filter = ['d_id']
  9. search_fields = ['d_name']
  10.  
  11. class StudentAdimin(admin.ModelAdmin):
  12. list_display = ['s_id','s_name']
  13. list_display_links = ['s_id','s_name']
  14.  
  15. class CourseAdmin(admin.ModelAdmin):
  16. list_display = ['c_id','c_name']
  17. list_display_links = ['c_id','c_name']
  18. list_per_page = 5
  19.  
  20. admin.site.register(Department,DepartmentAdimin)
  21. admin.site.register(Student,StudentAdimin)
  22. admin.site.register(Course,CourseAdmin)

auth权限

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

  1. from django.contrib.auth.models import User
  2. User.objects.create_user(username="yyyyyy",password="yyyyyy",email="xxx@yyy.com")

二、用户User操作

(一).验证用户

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

  1. from django.contrib.auth import authenticate
  2. user = authenticate(username=username,password=password)

authenticate这个单词的本意就是“证明…是真实的”

(二).保持登录状态

接上面(一)的验证代码,使用django的login(request,user)

  1. if user is not None:
  2. if user.is_active:
  3. login(request, user)
  4. # 登录成功
  5. else:
  6. # 用户没有被激活,不能登录
  7. else:
  8. # 用户名或者密码错误

Ps:request这个参数必须写上

(三).注销

直接logout(request)

  1. from django.contrib.auth import logout
  2.  
  3. def logout_view(request):
  4. logout(request)
  5. # 注销这个用户。他的session信息将被清除掉。

(四).操作前的验证判断

比如说,购买之前必须要登录,没有登录就不能购买。那么就用django自带的装饰器,装饰一下。

在具体的某个视图函数上面加上装饰器,例:

  1. from django.contrib.auth.decorators import login_required
  2.  
  3. @login_required # 这是一个装饰器
  4. def my_view(request):
  5. ...

这样之后,操作这个my_view()业务逻辑之前,都会判断下是否有登录,没有登录就执行其他操作。

(五).User模型常用属性和方法

  1. - username:用户名。
  2. - email:邮箱。
  3. - groups:多对多的组。
  4. - user_permissions:多对多的用户权限。
  5. - is_staff 是否是admin的管理员。
  6. - is_active 是否激活,判断该用户是否可用。
  7. - is_superuser: 是否是超级用户。
  8. - last_login 上次登录时间。
  9. - date_joined 注册时间。
  10. - is_authenticated 是否验证通过了。
  11. - is_anonymous:是否是匿名用户。
  12. - set_password(raw_password): 设置密码,传原生密码进去。
  13. - check_password(raw_password): 检查密码。
  14. - has_perm(perm): 判断用户是否有某个权限。
  15. - has_perms(perm_list): 判断用户是否有权限列表中的某个列表

三、Permission权限模型

(一).在模型中添加权限

  1. from django.db import models
  2.  
  3. class BlogModel(models.Model):
  4. id = models.AutoField(primary_key=True)
  5. title = models.CharField(max_length=100,blank=True)
  6. content = models.TextField()
  7.  
  8. class Meta:
  9. permissions = (
  10. ('watch_article', u'查看文章的权限'),
  11. ('update_article', u'修改文章的权限'),
  12. ('delete_article', u'删除文章的权限'),
  13. ('add_article', u'发布文章的权限'),
  14. )

(二).在代码中添加权限

  1. from django.contrib.auth.models import Permission
  2. from django.contrib.contenttypes.models import ContentType
  3.  
  4. def test(request):
  5. content_type = ContentType.objects.get_for_model(BlogModel)
  6. permission = Permission.objects.create(
  7. codename='can_publish',
  8. name='Can Publish BlogModel',
  9. content_type=content_type,
  10. )
  11. permission.save()
  12. return HttpResponse('success')

(三).用户权限操作

  1. myuser.user_permissions.set([permission_list])
  2. myuser.user_permissions.add(permission, permission, ...)
  3. myuser.user_permissions.remove(permission, permission, ...)
  4. myuser.user_permissions.clear()
  5. myuser.has_perm('foo.add_bar')

四、Group模型

(一).导包

django.contrib.auth.models.Group

(二).创建Group

  1. b1 = Group.objects.create(name="user_can_write_blog")
  2. b1.save()

注意:必须传一个name参数进去

(三).示例

  1. group.permissions.set([permission_list])
  2. group.permissions.add(permission, permission, ...)
  3. group.permissions.remove(permission, permission, ...)
  4. group.permissions.clear()

Django - admin后台、auth权限的更多相关文章

  1. django博客项目6:Django Admin 后台发布文章

    在此之前我们完成了 Django 博客首页视图的编写,我们希望首页展示发布的博客文章列表,但是它却抱怨:暂时还没有发布的文章!如它所言,我们确实还没有发布任何文章,本节我们将使用 Django 自带的 ...

  2. Django Admin后台添加用户时出现报错:1452

    如果在使用Django Admin后台添加用户时出现报错: (1452, 'Cannot add or update a child row: a foreign key constraint fai ...

  3. Django Admin后台管理模块的使用

    Admin后台管理模块的使用 Django的管理员模块是Django的标准库django.contrib的一部分.这个包还包括其它一些实用的模块: django.contrib.auth django ...

  4. django admin后台插件:django-suit入门

    去年9月底开始用django来做公司内部项目,开始对django有了一些了解,感觉django真的蛮强大的(也有很多人推荐flask,将来有空的话我会试试).今天的话只是介绍一个小东西,django管 ...

  5. django admin后台的简单使用

    创建自己的model.py文件 from django.db import models from django.contrib.auth.models import ( BaseUserManage ...

  6. Django admin 后台管理

    在App 文件夹下的 admin.py 文件中写入 from django.contrib import admin from app名 import models admin.site.site_h ...

  7. Django Admin后台管理功能使用+二次开发

    一  使用环境 开发系统: windows IDE: pycharm 数据库: msyql,navicat 编程语言: python3.7  (Windows x86-64 executable in ...

  8. Django admin后台操作

    Django提供自动后台管理应用,简称admin. admin是一个应用,每个Web站点都需要它.admin通过让开发者可以在完成完整的UI之前验证处理数据的代码. 设置admin 打开setting ...

  9. Django Admin 后台Admin继承UserAdmin增加用户密码不显示明文和用户登录不了的解决方法

    Django后台Admin继承UserAdmin增加用户不显示明文方法 1.在 models.py 中用户表 # 导包规范-1.Python标准模块 from django.db import mod ...

随机推荐

  1. scott权限

    有时scott数据被破坏了  可以回复 以下为 安装路径 dos下   @G:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN\scott. ...

  2. JBoss目录结构说明

    http://www.blogjava.net/livery/articles/262544.html $JBOSS-HOME/bin:             放置各种脚本文件以及相关文件,包括jb ...

  3. 【转】可在广域网部署运行的即时通讯系统 -- GGTalk总览(附源码下载)

    原文地址:http://www.cnblogs.com/justnow/p/3382160.html (最新版本:V6.0,2017.12.11 .即将推出Xamarin移动端版本,包括 Androi ...

  4. css hacks

    /***** Selector Hacks ******/ /* IE6 and below */ * html #uno { color: red } /* IE7 */ *:first-child ...

  5. ubuntu安装Skype 4.3

    Install Skype 4.3 Step 1: Remove previous version sudo apt-get remove skype skype-bin:i386 skype:i38 ...

  6. oracle 复杂的查找用法

    [第一题]: 找到员工表中工资最高的前三名,要求按如下格式输出(第一步部分):以及oracle查询结果指定分页显示的方法(第二部分). ——涉及Top-N分析问题. 一般不在子查询中使用order b ...

  7. 详解Struts1中的struts-config.xml配置文件【一】

    搞清楚struts-config.xml中各项元素的作用,对于我们构建web项目有莫大的好处.<struts-config>是struts的根元素,它主要有8个子元素,DTD定义如下: & ...

  8. python-数据结构Data Structure1

    四种数据结构: 列表list = [val1,val2,val3,val4]字典dict = {key1:val1,key2:val2}元组tuple = (val2,val2,val3,val4)集 ...

  9. IOS 拍照旋转修正

    - (UIImage *)fixOrientation:(UIImage *)aImage { // No-op if the orientation is already correct if (a ...

  10. RESTORE DATABASE命令还原SQLServer 数据库 bak

    今天在sqlServer20005 的management studio里使用bak文件还原数据库的时候,总是失败!Restore failed for Server 'ADANDELI'.  (Mi ...