admin後臺python
1、建立一個管理員用戶django
(1).設置時區、語言(可選步驟)session
打開settings.py,改爲下面那樣app
LANGUAGE_CODE = 'zh-Hans' TIME_ZONE = 'Asia/Shanghai'
(2).執行命令python manage.py createsuperuseride
(3).按提示輸入用戶名、郵箱、密碼(密碼至少須要8位)函數
(4).啓動服務,訪問 127.0.0.1:8000/admin 便可進入站點管理ui
2、向admin註冊模型spa
#----------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)
3、自定義管理頁面code
Django提供了admin.ModelAdmin類經過定義ModelAdmin的子類,來定義模型在Admin界面的顯示方式blog
(一).列表頁屬性
(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權限
1、使用視圖方式建立一個超級用戶
from django.contrib.auth.models import User User.objects.create_user(username="yyyyyy",password="yyyyyy",email="xxx@yyy.com")
2、用戶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): 判斷用戶是否有權限列表中的某個列表
3、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')
4、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()