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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Django 学习第十一天——中间键和上下文处理器

發(fā)布時間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django 学习第十一天——中间键和上下文处理器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

一、中間鍵的引入:

  Django中間件(Middleware)是一個輕量級、底層的“插件”系統(tǒng),可以介入Django的請求和響應處理過程,修改Django的輸入或輸出.

?

  django中的中間鍵:

    django 中的中間件(middleware),在django中,中間件其實就是一個類,在請求到來和結束后,django會根據(jù)自己的規(guī)則在合適的時機執(zhí)行中間件中相應的方法。

    在django項目的settings模塊中,有一個 MIDDLEWARE_CLASSES 變量,其中每一個元素就是一個中間件.

?

    自定義中間鍵文件可以放在改項目的任意可以導入的地方(一般放在app根目錄里面)

    一個中間鍵就是一個可調用的對象,他會接收一個request并返回一個請求

?

    自定義一個中間鍵可以是一個函數(shù):

def xxx(get_response): # (中間鍵工廠)函數(shù)名自定義,傳的這個參數(shù)必須是這個名字# 這里寫一次性的設置和初始化:在 start project 的時候執(zhí)行的,只執(zhí)行一次def xx(request): # (中間鍵)函數(shù)名自定義,傳的這個參數(shù)必須是這個名字# 這里寫處理請求之前的代碼# 視圖將會被調用,或者后面的中間鍵會執(zhí)行response = get_response(request)# 處理請求響應之后的代碼(視圖已經(jīng)被調用了)return responsereturn xx # 返回自定義的中間鍵

    激活(注冊)中間鍵:在?setttings.py?文件里的?MIDDLEWARE?列表里添加自定義的中間鍵工廠全路徑(到中間鍵工廠;添加到最后)

?

  例子:定義一個只能讓谷歌瀏覽器訪問的網(wǎng)站

from django.http import HttpResponseForbiddendef xxx(get_response): # (中間鍵工廠)函數(shù)名自定義,傳的這個參數(shù)必須是這個名字def xx(request): # (中間鍵)函數(shù)名自定義,傳的這個參數(shù)必須是這個名字user_angent = reqeust.META['HTTP_USER_AGENT'] # 獲取請求的源信息中的 USER_AGENTif not 'chrome' in user_agent.lower(): # 判斷 chrome(谷歌瀏覽器) 在不在里面;忽略大小寫(都用小寫的)return HttpRespinseForbidden()response = get_response(request)return responsereturn xx # 返回自定義的中間鍵

?

?

    自定義一個中間鍵也可以是一個類:(這個的實例可以被調用)

class Xxx: (中間鍵工廠)類名自定義def __init__(self,get_response): # 傳的這個參數(shù)必須是這個名字self.get_response = get_response# 這里寫一次性的設置和初始化:在 start project 的時候執(zhí)行的,只執(zhí)行一次def __call__(self.request):# 這里寫處理請求之前的代碼# 視圖將會被調用,或者后面的中間鍵會執(zhí)行response = self.get_response(request)# 處理請求響應之后的代碼(視圖已經(jīng)被調用了)return response

    激活(注冊)中間鍵:在 setttings.py?文件里的?MIDDLEWARE?列表里添加自定義的中間鍵工廠全路徑(到中間鍵工廠;添加到最后)

?

  請求和響應順序:

    按照 settings.py 文件 中的 MIDDLEWARE 列表順序來的;請求的時候從前往后(從第一個到最后一個);響應的時候從后往前(從最后一個到第一個)

?

?

?

二、上下文處理器:

  所有頁面都需要特定變量

  自定義上下文處理器也可以放在該項目的任意可以導入的地方(一般放在app根目錄里面)

?

  自定義上下文處理器也可以是一個函數(shù):

def xxx(request): # 傳入必須是 request 這個名字當參數(shù)return {'key':'value'} # 必須返回一個字典類型的對象;獲取用 key 就可以了

    激活(注冊):在 settings.py 文件里的 TEMPLATES?中的 OPTIONS?中的 'context_processors' 里面添加自定義的上下文處理器的全路徑(添加到最后)

?

?

  注意:如果在視圖(views)中有相同的 key 被傳入,那么將會使用 該 views 中的key

?

  中間鍵和上下文總結:

    中間件是在用戶請求到響應的過程中去加入一些額外的邏輯功能

    上下文是給所有的模板增加變量

?

三、django admin后臺:

  配置 admin.py 文件:

from django.contrib import adminfrom .models import 自定義表1,自定義表2 admin.site.register(自定義表1) admin.site.register(自定義表2)

?

  創(chuàng)建超級管理員:(命令行在項目根目錄輸入)

python manage.py createsuperuser

    需要:用戶名;郵箱;密碼

配置url:(默認是配置好的)

?

?

  進入django后臺:

    瀏覽器輸入:ip:端口/admin

    輸入剛剛新建的用戶名,密碼

?

  設置中文和中國時間:

    在?settings.py 文件里設置:?

?

?

  自定義管理頁面:

    Django提供了admin.ModelAdmin類

    通過定義ModelAdmin的子類,來定義模型在Admin界面的顯示方式

?

    列表頁屬性:

      list_display:顯示字段,可以點擊列頭進行排序;等于一個列表;

      list_display_links:點擊該字段可以進入編輯頁,可以寫多個;等于一個列表

      list_filter:過濾字段,過濾框會出現(xiàn)在右側;等于一個列表;

      search_fields:搜索字段,搜索框會出現(xiàn)在上側;等于一個列表;

      list_per_page:分頁,分頁框會出現(xiàn)在下側;等于一個整數(shù)(頁數(shù))

    添加、修改頁屬性:

      fields:屬性的先后順序;等于一個列表

      fieldsets:屬性分組;等于一個列表

      注意:上面兩個屬性,二者選一。

?

注冊的時候需要把它的管理類一起注冊進去

?

?

轉載于:https://www.cnblogs.com/2018-8-31/p/10544048.html

總結

以上是生活随笔為你收集整理的Django 学习第十一天——中间键和上下文处理器的全部內容,希望文章能夠幫你解決所遇到的問題。

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