1.模板標籤和模板變數
模板標籤在中定義:
thanks for logging in!
please log in.
模板變數在 中定義:
my first name is }. my last name is }.
2.context處理器和 requestcontext處理器
context 是乙個傳遞給模板的名稱到值的對映(類似python字典)。通過從context獲取值來替換模板中變數並執行所有的模板標籤來實現模板渲染。
from django.template importloader, context
defview_1(request):
#...
t = loader.get_template('
template1.html')
c =context()
return
t.render(c)
defview_2(request):
#...
t = loader.get_template('
template2.html')
c =context()
return t.render(c)
在上述**中定義了兩個檢視,他們除了message不同其餘資訊都相同,而這樣分別定義顯然是冗餘的。所以需要引入 requestcontext處理器。
from django.shortcuts importrender_to_response
from django.template import
requestcontext
defcustom_proc(request): # context處理器,它接收乙個 httprequest 物件,然後返回乙個字典
""return
defview_1(request):
#...
return render_to_response('
template1.html',
,context_instance=requestcontext(request, processors=[custom_proc])) # 接受processors引數
defview_2(request):
#...
return render_to_response('
template2.html',
,context_instance=requestcontext(request, processors=[custom_proc]))
上述**中利用 render_to_response 代替了render使得可以不用手動載入模板。值得注意的是,在上面這種方法中雖然看似減少了冗餘**,但是由於需要不斷鍵入processors引數,所以依然不夠簡潔。
所以djang提供對全域性 context 處理器的支援。在settings.py 中,有類似**:
templates =[,},]
以下方法實現全域性化文字處理器。
在context_processors.py中建立你需要定義的處理器,使每個context處理器完成盡可能小的功能。
將該文字處理器引入到context_processors目錄下,如上文**。
特別的,不去額外定義 context_processors.py ,而在 views.py 中直接寫好custom_proc後,則可以將其目錄加入到context_processors中。eg:上述**中的def custom_proc(request):
3. 呼叫 settings.py 中的配置資訊作為全域性呼叫
site_name = '。。。的個人部落格
'site_desc = '
python開發 && django開發
'
from django.conf importsettings
defglobal_setting(request):
return
至此,這種方法也不需要在render 或 render_to_response 中指明 context 或 requestcontext 就可以直接在html模板中利用模板變數來進行渲染。
相比之下,還是方法2中較簡單。
Android開發之全域性獲取Context的技巧
第一行 android 高階篇 這本書對於入門來說確實很棒,很簡單明瞭的介紹了android開發中涉及到的方方面面,對我的幫助很大,同時記錄一些該書中一些對我以後開發有用的東西,以方便使用。1 public23 private static context context 45 override 6...
Django獲取全域性request
某些情景下,我們需要在任意函式內獲取request,但是django並沒有給我們提供獲取全域性request的方法。當request到達檢視函式前,會經過中介軟體攔截。我們可以自己寫乙個中介軟體,並設計成單例模式。然後在中介軟體中取得當前request物件,並儲存在中介軟體物件中。middlewar...
計算機中的contex理解
1 其實簡單的說就是跟當前主題有關的所有內容。2 如說到程式的上下文,就是當前這段程式之上和之下的程式段。因為有些變數 函式不一定都定義在一起,而且乙個程式段不是一行就能寫完,之間有有很多的聯絡。就像看英語閱讀或者 等都需要前後理解的。3 而 裝置上下文 the device context 是一種...