Django學習筆記(3)---在模板中調用request

      在模板中調用request的時候發現值爲空,可是有時候須要在模板中調用該值來實現一些功能,爲了不重複勞動咱們但願視圖函數在返回是默認返回request python

解決方案: django

在settings.py中 函數

根據Django文檔,默認狀況下, TEMPLATE_CONTEXT_PROCESSORS 設置以下: spa

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
)

這個設置項是一個可調用函數的元組,它們以request對象做爲參數,返回一個會被合併傳給context的字典: 接收一個request對象做爲參數,返回一個包含了將被合併到context中的項的字典。

查看settings.py發現如今默認是沒有TEMPLATE_CONTEXT_PROCESSORS的,本身動手作以下添加 debug

#其他部分省略

TEMPLATE_CONTEXT_PROCESSORS=(
	'django.core.context_processors.request',
)
接着

在視圖函數中調用 code

#其中,第一個參數爲模板,第二個參數爲字典
return render_to_response(template_name,{},context_instance=RequestContext(request))
這個方法看起來仍是很麻煩,由於要補充一長串代碼

咱們能夠對render_to_response進行封裝 對象

在 utils.py中 文檔

from django.shortcuts import render_to_response,RequestContext

#自定義render_to_response,將request封裝到response返回到模板
def myrender_to_response(request,template,data={}):
	return render_to_response(template,data,context_instance=RequestContext(request))
這樣,在視圖函數中使用
#第一個參數爲request,第二個參數爲模板,第三個參數爲字典
return myrender_to_response(request,template_name,{})

在模板中例如{{request.user}}便可正常現實,還有些有時間再補充 模板


轉載請註明出處,謝謝! class

相關文章
相關標籤/搜索