1. 程式人生 > >Django22-檢視、上下文、中介軟體

Django22-檢視、上下文、中介軟體

有時候我們想讓一些內容在多個模板中都要有,比如導航內容,我們又不想每個檢視函式都寫一次這些變數內容,怎麼辦呢?

這時候就可以用 Django 上下文渲染器來解決。

一,初識上下文渲染器

我們從檢視函式說起,在 views.py 中返回字典在模板中使用:

1 2 3 4 from django.shortcuts import render def home(request): return render(request, 'home.html', {'info''Welcome to ziqiangxuetang.com !'
})

這樣我們就可以在模板中使用 info 這個變量了。

1 {{ info }}

模板對應的地方就會顯示:Welcome to ziqiangxuetang.com !

但是如果我們有一個變數,比如使用者的IP,想顯示在網站的每個網頁上。再比如顯示一些導航資訊在每個網頁上,該怎麼做呢?

一種方法是用死程式碼,直接把欄目固定寫在 模組中,這個對於不經常變動的來說也是一個辦法,簡單高效。

但是像使用者IP這樣的因人而異的,或者經常變動的,就不得不想一個更好的解決辦法了。

由於上下文渲染器API在Django 1.8 時發生了變化,被移動到了 tempate 資料夾下,所以講解的時候分兩種,一種是 Django 1.8 及以後的,和Django 1.7及以前的。

我們來看Django官方自帶的小例子:

Django 1.8 版本:

1 2 def request(request):     return {'request': request}

在settings.py 中:

Django 1.8 版本 settings.py:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 TEMPLATES = [ { 'BACKEND'
'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS'True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]

Django 1.7 版本 settings.py 預設是這樣的:

1 2 3 4

相關推薦

Django22-檢視上下文中介軟體

有時候我們想讓一些內容在多個模板中都要有,比如導航內容,我們又不想每個檢視函式都寫一次這些變數內容,怎麼辦呢? 這時候就可以用 Django 上下文渲染器來解決。 一,初識上下文渲染器 我們從檢視函式說起,在 views.py 中返回字典在模板中使用: 1 2

三十一python學習之Flask框架(三)檢視:路由上下文Flask-Script擴充套件

一、裝飾器路由的具體實現 1.Flask框架路由實現 Flask有兩大核心:Werkzeug和Jinja2 Werkzeug實現路由、除錯和Web伺服器閘道器介面 Jinja2實現了模板。 Werkzeug是一個遵循WSGI協議的python函式庫

KafkaRabbitMQRocketMQ訊息中介軟體的對比 —— 訊息傳送效能(轉自阿里中介軟體

引言分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。那麼,訊息中介軟體效能究竟哪家強?帶著這個疑問,我們中介軟體測試組對常見的三類訊息產品(Kafka、Rabb

KafkaRabbitMQRocketMQ 訊息中介軟體的對比 | 訊息傳送效能篇

摘要: 訊息中介軟體效能究竟哪家強? 帶著這個疑問,我們訊息佇列測試小組對常見的三類訊息產品(Kafka、RabbitMQ、RocketMQ)做了效能比較。 阿里雲訊息佇列測試小組 出品 分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在

關於express中介軟體的簡要解析之應用級路由級中介軟體(一)

      Express 是一個自身功能極簡,完全是由路由和中介軟體構成一個的 web 開發框架:從本質上來說,一個 Express 應用就是在呼叫各種中介軟體。中介軟體(Middleware) 是一個函式,它可以訪問請求物件(request object (req)

KafkaRabbitMQRocketMQ訊息中介軟體的對比

引言分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。那麼,訊息中介軟體效能究竟哪家強?帶著這個疑問,我們中介軟體測試組對常見的三類訊息產品(Kafka、Rabb

四十二python學習之Django框架(二):類檢視中介軟體

五、類檢視: 1.類檢視引入: 以函式的方式定義的檢視成為函式檢視,即我們常說的檢視函式. 但是, 檢視函式遭遇不同的請求方法(如get和post),並且需要做不同的處理時,我們如果在一個函式中編寫不同的業務邏輯,程式碼可讀性和複用性都不好. 例如:

Scrapy——5 下載中介軟體常用函式scrapy怎麼對接selenium常用的Setting內建設定有哪些

Scrapy——5   下載中介軟體常用的函式 Scrapy怎樣對接selenium 常用的setting內建設定   (Downloader Middleware)下載中介軟體常用函式有哪些  Scrapy怎樣對接Selenium 設定

【知識積累】(四)訊息中介軟體 - 升級版

一、訊息釋出 二、訊息訂閱 三、總結 1、ActiveMQ的特性(1)、多種語言和協議客戶端。語言:Java,C,C++,C#,Ruby,Perl,Python,PHP。應用協議:OpenWire,Stomp REST,WS Noti

淺談架構框架模式模組元件外掛控制元件中介軟體

軟體開發中,你常常會聽到技術架構、開發框架、設計模式、程式碼模組、中間層(件)、可插拔元件等等計算機行業的專有名詞。這些名詞和我們的開發工作息息相關,如果你想要在開發領域做的更好、走的更遠,你必須要對這些專有名詞有一個大概的瞭解。 1、架構 架構也成稱為軟體體系結構。簡單地說就是一種設計

Django框架(十八)—— 中介軟體CSRF跨站請求偽造

中介軟體 一、什麼是中介軟體 中介軟體是介於request與response處理之間的一道處理過程,相對比較輕量級,並且在全域性上改變django的輸入與輸出 二、中介軟體的作用 如果你想修改請求,例如被傳送到view中的HttpRequest物件。 或者你想修改view返回的HttpRespon

web伺服器Web中介軟體和Web容器的區別

目錄 Web伺服器 中介軟體 容器 總結 Web開發的選擇 我們經常會被Web伺服器、Web容器和Web中介軟體這三個概念搞混。因為我們常見的很多網站要麼是由IIS搭建,要麼是由Apache、Tomcat、Ngnix搭建。所以,我們會把他們都叫成是Web伺服器,因為他們都

golang 中介軟體json返回302跳轉

package main import ( "fmt" "net/http" ) func middleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r

golangWeb框架---github.com/gin-gonic/gin學習七(重定向中介軟體Goroutineshttp自定義配置)

重定向 package main import ( "github.com/gin-gonic/gin" "net/http" ) func main() { router := gin.Default() router.GET("/raw",

訊息中介軟體系列五:RabbitMQ的使用場景(非同步處理應用解耦)

一、非同步處理 場景: 使用者註冊,寫入資料庫成功以後,傳送郵件和簡訊。 準備工作: 1)安裝RabbitMQ,參考前面的文章 2)新建一個名為RabbitMQAsyncProc的maven web工程,在pom.xml檔案裡面引入如下依賴 <project xmlns="http://maven.a

訊息中介軟體kafka與activeMQrabbitMQzeroMQrocketMQ的比較

一、kafka 1、不完全符合jms規範,注重吞吐量,類似udp 和 tcp 2、一般做大資料吞吐的管道 我們現在的用途就是負責在各個idc之間通訊 3、量大對資料不是百分之百保證的,會有資料丟失,不是百分百送達(amq和rmq等有重發機制,而kafka沒有);在吞吐量有提升 ,在這方面

KafkaRabbitMQRocketMQ等訊息中介軟體的對比 —— 訊息傳送效能和區別

分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。 那麼,訊息中介軟體效能究竟哪家強? 帶著這個疑問,我們中介軟體測

訊息中介軟體MQ(二)模式應用場景常用協議

1.訊息中介軟體模式分類 1.1 點對點 1.2釋出/訂閱 2訊息中介軟體應用場景 2.1非同步通訊 有些業務不想也不需要立即處理訊息。訊息佇列提供了非同步處理機制,允許使用者把一個訊息放入佇列,但並不立即處理它。想向佇列中放入多少訊息就放多少,然後在需要的

架構師日記——KafkaRabbitMQRocketMQ等訊息中介軟體的對比

分散式系統中,我們廣泛運用訊息中介軟體進行系統間的資料交換,便於非同步解耦。現在開源的訊息中介軟體有很多,前段時間我們自家的產品 RocketMQ (MetaQ的核心) 也順利開源,得到大家的關注。 那麼,訊息中介軟體效能究竟哪家強? 帶著這個疑問,我們中

訊息中介軟體系列五rabbit訊息的確認機制

一、訊息的確認機制 1、消費者收到的每一條訊息都必須進行確認。(分為自動確認和消費者自行確認) 消費者在宣告佇列時,指定autoAck引數,true自動確認,false時rabbitmq會等到消費者顯示的發回一個ack訊號才會刪除訊息。autoAck=fals