中間件和上下文處理器、djangoAdmin
阿新 • • 發佈:2019-03-20
call print delet 分享圖片 .site 信息 結果 use 補全
中間件
中間件代碼放到python任意的地方,能找到導入就行,這裏放到app裏
創建middleware.py文件,中間件的兩種方法
#一個中間件是一個可調用的對象,接受一個request,返回一個請求 #第一種:一個中間件可以是一個函數 #實現功能:利用中間件實現:只有谷歌瀏覽器才讓訪問 通過user_agent區分 from django.http import HttpResponseForbidden def simple_middleware(get_response):#參數必須是get_response #一次性的設置和初始化 start projectprint(‘我是一次性設置000000‘) def middleware(request): #在每一個請求上都會調用 #處理請求之前被執行的代碼 #視圖將會被調用,或者後後面的中間件會執行 print(‘我在視圖調用前調用了11111‘) user_agent = request.META[‘HTTP_USER_AGENT‘] #源信息 if not ‘chrome‘ in user_agent.lower(): return HttpResponseForbidden() response=get_response(request) #處理請求響應之後的代碼 #視圖已經被調用 print(‘視圖已經被調用22222 ‘) return response return middleware # 第二種方式實現中間件,還可以使用一個類,並且它的實例可以被調用 class SimpleMiddleWare: def __init__(self,get_response):#必須有一個__init__初始化方法,必須有一個get_reponse方法 self.get_response = get_response#一次性的設置和初始化 start project print(‘我是一次性設置0000001‘) def __call__(self, request): #在每一個請求上都會調用 #處理請求之前被執行的代碼 #視圖將會被調用,或者後後面的中間件會執行 print(‘我在視圖調用前調用了333333333333‘) response = self.get_response(request) #處理請求響應之後的代碼 #視圖已經被調用 print(‘視圖已經被調用44444444444444 ‘) return response
激活中間件,設置到middleware的列表中
在settings.py中添加
MIDDLEWARE = [‘teacher.middleware.simple_middleware‘, ‘teacher.middleware.SimpleMiddleWare‘ ]
請求結果:
中間件還可以調用的方法:
上下文處理器
#上下文處理器就是一個python函數
#必須接受一個request參數,必須返回一個字典
如果context中定義了與上下文中相同名字變量,會覆蓋上下文中定義的變量。
djangoAdmin
步驟:
1.在install_app中註冊,默認都有
INSTALLED_APPS = [‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ]
設置template 中的,默認都有
‘context_processors‘: [‘django.contrib.auth.context_processors.auth‘, ‘django.contrib.messages.context_processors.messages‘, ]
3.中間件配置,默認都有
MIDDLEWARE = [‘django.contrib.auth.middleware.AuthenticationMiddleware‘, ‘django.contrib.messages.middleware.MessageMiddleware‘, ]
4.配置根url中配置admin.默認有
path(‘admin/‘, admin.site.urls),
如果沒有這些,先把這些補全,然後做數據庫遷移,在進行訪問
第一個用戶需要使用命令行創建:
然後從頁面進行登錄:
修改成中文,修改settings.py 中的語言配置
LANGUAGE_CODE = ‘zh-Hans‘#en-us
將創建的模型通過管理站點進行顯示:
在admin.py文件中進行註冊。文件中還進行了顯示,索引,分組,分頁過濾,查詢等的功能展示。
from django.contrib import admin from teacher.models import StudentDetail,Student class StudentAdmin(admin.ModelAdmin): #顯示列表的設置 list_display = [‘id‘,‘name‘,‘sex‘,‘qq‘,‘phone‘,‘c_time‘] #顯示 list_display_links = [‘id‘,‘name‘] #索引 search_fields = [‘name‘,‘sex‘,‘c_time‘] #查詢 list_filter = [‘sex‘,‘name‘] #過濾 list_per_page = 3 #分頁 #詳情頁,添加頁的設置 fields與fieldsets只能有一個存在 # fields = [‘name‘,‘qq‘] #分組 fieldsets = [ (None,{‘fields‘:[‘name‘,‘sex‘]}), (‘詳細信息‘,{‘fields‘:[‘qq‘,‘phone‘,‘grade‘]}), (‘設置‘,{‘fields‘:[‘is_deleted‘]}), ] # Register your models here. admin.site.register(StudentDetail) admin.site.register(Student,StudentAdmin)
如圖所示:
中間件和上下文處理器、djangoAdmin