日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

django crm 03

發布時間:2024/4/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 django crm 03 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 今日內容:
    •   通過中間件,給視圖函數 增加 登陸驗證,權限驗證功能
    • ?? 給中間件設置白名單,登陸視圖函數不需要認證
    • ?? 登陸之后,會把 用戶名和權限列表存儲在session中
    • ?? 在中間件中完成 認證功能
from django.contrib import adminfrom app01 import models # Register your models here.# 控制admin中的顯示方式 class PermissionAdmin(admin.ModelAdmin):list_display = ['pk','title','url'] #告訴admin顯示列表的哪些字段ordering = ['-pk'] #告訴admin 以什么方式排序class RoleAdmin(admin.ModelAdmin):list_display = ['pk','title']admin.site.register(models.User) admin.site.register(models.Role, RoleAdmin) #告訴admin以上面指定的方式展示列表 admin.site.register(models.Permission,PermissionAdmin) admin from django.db import models# Create your models here.class User(models.Model):name = models.CharField(max_length=32)pwd = models.CharField(max_length=32)roles = models.ManyToManyField('Role')def __str__(self):return self.nameclass Role(models.Model):title = models.CharField(max_length=32)permissions = models.ManyToManyField('Permission')def __str__(self):return self.titleclass Permission(models.Model):title = models.CharField(max_length=32)url = models.CharField(max_length=128)def __str__(self):return self.title models.py from django.shortcuts import render,HttpResponse,redirect from django.views import View from app01 import models# Create your views here. class Login(View): def get(self,request):return render(request,'login.html')def post(self,request):#step 1: 獲取用戶提交的用戶名和密碼user = request.POST.get('user')pwd = request.POST.get('pwd')#step 2: 根據用戶名和密碼取數據庫中驗證,相當于auth.authentacateuser_obj = models.User.objects.filter(name=user,pwd=pwd).first()if user_obj:#如果登陸成功, 將 用戶名存到 session 中, 將 permission_llist存到session中request.session['user'] = user_obj.namepermission_obj = models.Permission.objects.filter(role__user=user_obj)print(permission_obj)permission_list = [i.url for i in permission_obj]request.session['permission_list'] = permission_listreturn redirect(request.path)else:return render(request,'login.html',{'error':'用戶名或密碼錯誤'})class Record(View):def get(self,request):return render(request,'record.html')class AddRecords(View):def get(self,request):return render(request,'addrecords.html')class EditRecords(View):def get(self,request):return render(request,'editrecords.html')class DeleteRecords(View):def get(self,request):return render(request,'deletecustomer.html')class Customer(View):def get(self,request):return render(request, 'customer.html') class AddCustomer(View):def get(self,request):return render(request,'addcustomer.html') class EditCustomer(View):def get(self,request):return render(request,'editrecords.html') class DeleteCustomer(View):def get(self,request):return render(request,'deletecustomer.html') views """crm03 URL Configuration The `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/1.11/topics/http/urls/ Examples: Function views1. Add an import: from my_app import views2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') Class-based views1. Add an import: from other_app.views import Home2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') Including another URLconf1. Import the include() function: from django.conf.urls import url, include2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls')) """ from django.conf.urls import url from django.contrib import admin from app01 import viewsurlpatterns = [url(r'^admin/', admin.site.urls),url(r'^login/', views.Login.as_view(), name='login'),url(r'^record/$', views.Record.as_view(), name='record'),url(r'^record/add/', views.AddRecords.as_view(), name='addrecord'),url(r'^record/edit/', views.EditRecords.as_view(), name='editrecord'),url(r'^record/delete/', views.DeleteRecords.as_view(), name='deleterecord'),url(r'^customer/$', views.Customer.as_view(), name='customer'),url(r'^customer/add/', views.AddCustomer.as_view(), name='addcustomer'),url(r'^customer/edit/', views.EditCustomer.as_view(), name='editcustomer'),url(r'^customer/delete/', views.DeleteCustomer.as_view(), name='deletecustomer'), ] urls 1 from django.utils.deprecation import MiddlewareMixin 2 import re 3 from django.shortcuts import HttpResponse,redirect,render 4 5 class Md1(MiddlewareMixin): 6 7 def process_request(self,request): 8 9 #白名單放行 10 for i in ['/login/','/admin/',]: 11 ret = re.search(i,request.path) 12 print(ret,i) 13 if ret: 14 print('判斷之后:',ret,i) 15 return None 16 17 #登錄認證 18 user = request.session.get('user') 19 if not user: 20 return redirect('login') 21 22 #權限認證 23 for item in request.session.get('permission_list'): 24 print(item) 25 reg = f'^{item}$' 26 ret = re.search(reg,request.path) 27 if ret: 28 return 29 else: 30 return HttpResponse('不好意思,權限不夠,無權訪問') 中間件

?

轉載于:https://www.cnblogs.com/zhangjian0092/p/11024655.html

總結

以上是生活随笔為你收集整理的django crm 03的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。