CBV(class base views) ModelForm 權限-rbac-(role-based access control) admin組件
1 CBV 看源碼 url("login",views.LoginView.as_view()) views.LoginView.as_view()=view 一旦用戶訪問login: view(request)===dispatch(request)====self.get(request) 2 ModelForm: forms組件: class BookForm(forms.Form): title=forms.CharField() price=forms.DecimalField() publishDate=forms.DateField() #state=forms.ChoiceField(choices=[(1,"已出版"),(2,"未出版")]) publish=forms.ModelChoiceField(queryset=Publish.objects.all()) authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all()) modelForm: model: class Book(models.Model): title = models.CharField( max_length=32) publishDate=models.DateField() price=models.DecimalField(max_digits=5,decimal_places=2) # 與Publish創建一對多的關係,外鍵字段創建在多的一方 publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE) # 與Author表創建多對多的關係,ManyToManyField能夠建在兩個模型中的任意一個,自動建立第三張表 authors=models.ManyToManyField(to='Author',) #################################### from django.forms import ModelForm class BookModelForm(ModelForm): class Meta: model=Book fields="__all__" #################################### class BookForm(forms.Form): title=forms.CharField() price=forms.DecimalField() publishDate=forms.DateField() #state=forms.ChoiceField(choices=[(1,"已出版"),(2,"未出版")]) publish=forms.ModelChoiceField(queryset=Publish.objects.all()) authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all()) #################################### addBook: def addbook(): if get請求: form=BookModelForm() return render(request,"addbook.html",locals()) # 標籤渲染 {{form.as_p}} if post請求: form=BookModelForm(request.POST) if form.is_valid(): form.save() # create操做 editBook: def editbook(): if get請求: editbook=Book.objects.get(pk=id) form=BookModelForm(instance=editbook) return render(request,"addbook.html",locals()) # 標籤渲染 {{form.as_p}} if post請求: editbook=Book.objects.get(pk=id) form=BookModelForm(request.POST,instance=editbook) if form.is_valid(): form.save() # update操做 CRM: 1 權限 什麼是權限? 一個包含正則表達式的url就是權限 who what how wenzhou 訂單表 查看 版本一: UserInfo id name age 1 alex1 33 2 alex2 33 3 alex3 33 4 alex4 33 5 alex5 33 6 alex6 33 7 alex7 33 8 alex8 33 9 alex9 33 10 alex10 33 permission id title url 1 查看訂單 /orders/ 2 添加訂單 /orders/add/ 3 查看客戶 /customers/ 4 添加客戶 /customers/add UserInfo-permission id userinfo_id permission_id 1 1 1 2 1 2 3 1 3 4 1 4 版本二: 模型:rbac(role-based access control) UserInfo id name age 1 alex1 33 2 alex2 33 3 alex3 33 4 alex4 33 5 alex5 33 6 alex6 33 7 alex7 33 8 alex8 33 9 alex9 33 10 alex10 33 role id name 1 管理員 2 CEO 3 銷售 4 講師 UserInfo-role id userinfo_id role_id 1 1 3 1 2 3 1 3 3 1 4 3 1 5 3 permission id title url 1 查看訂單 /orders/ 2 添加訂單 /orders/add/ 3 查看客戶 /customers/ 4 添加客戶 /customers/add 5 編輯客戶 /customers/(\d+)/change permission-Role id role_id permission_id 1 3 1 2 3 2 3 3 3 4 3 4 權限: login: 註冊session(查詢) 中間件: # 白名單校驗(正則) # 登陸校驗 # 權限校驗 2 admin組件 Django後臺數據庫管理工具(web頁面) 目的: 1 使用組件 2 看源碼 3 本身獨立開發一個相似組件 1 使用組件admin 一旦註冊Book: url: 查看書籍: http://127.0.0.1:8007/admin/app01/book/ 添加書籍 http://127.0.0.1:8007/admin/app01/book/add/ 編輯書籍: http://127.0.0.1:8007/admin/app01/book/1/change/ 刪除書籍: http://127.0.0.1:8007/admin/app01/book/1/delete/ 今日做業: 1 權限的菜單欄 2 單例模式 https://www.cnblogs.com/yuanchenqi/articles/8323452.html https://www.cnblogs.com/yuanchenqi/articles/8715364.html 3 crm ---客戶表管理 ---學生以及學習記錄的管理
FBV(function base views) 就是在視圖裏使用函數處理請求。html
CBV(class base views) 就是在視圖裏使用類處理請求。git
Python的pep8-代碼規範
http協議支持的請求方式: 1.get請求:查詢 2.post請求:提交數據(添加記錄) 3.delete請求:刪除數據 4.put/patch:更新數據
視圖類web
url路由工做過程正則表達式
重寫dispatch,不論get仍是post請求都會執行數據庫
回顧Forms組件django
http://www.cnblogs.com/yuanchenqi/articles/9036474.htmlrestful
modelform比form功能強大
form組件除了校驗,別的都幹不了
form組件,多選項session
class Addapp
add.html函數
class edit
modelform只有編輯頁,添加頁,纔有意義
url地址權限校驗,嚴格限制頭和尾
url登陸校驗,每個url都應該校驗用戶有無權限訪問
不可能每一個url視圖都寫一遍校驗代碼 解決辦法:寫中間件。
permissionValid.py
校驗權限的中間件須要放過一些URL,如login
admin.py
經過admin添加表,至關於navicat
參考: