1. 程式人生 > >中間件和上下文處理器、djangoAdmin

中間件和上下文處理器、djangoAdmin

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 project
print(我是一次性設置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