我發現自己總是傳遞一個「用戶」變量每次調用render_to_response
總是選擇render_to_response傳遞一個變量
我的很多渲染這個樣子的
return render_to_response('some/template', {'my':context,'user':user})
是否有辦法來自動發送這個'user'變量時,每次調用方法時都不需要手動將其添加到上下文中?
我發現自己總是傳遞一個「用戶」變量每次調用render_to_response
總是選擇render_to_response傳遞一個變量
我的很多渲染這個樣子的
return render_to_response('some/template', {'my':context,'user':user})
是否有辦法來自動發送這個'user'變量時,每次調用方法時都不需要手動將其添加到上下文中?
首先,閱讀this。然後:
def some_view(request):
# ...
return render_to_response('my_template.html',
my_data_dictionary,
context_instance=RequestContext(request))
你可能想看看render_to
,這是Django的惱人的一部分 - 它允許你做這樣的事情:
@render_to('template.html')
def foo(request):
bar = Bar.object.all()
return {'bar': bar}
# equals to
def foo(request):
bar = Bar.object.all()
return render_to_response('template.html',
{'bar': bar},
context_instance=RequestContext(request))
你可以寫一個類似的裝飾(如render_with_user_to
),包裝與你一起。
Dimitry是正確的,但您可以通過使用direct_to_template通用視圖作爲常規函數來進一步簡化此操作。它的源代碼是here。
還有不錯的附加組件,django-annoying
,它提供了render_to裝飾器做類似的事情,但不需要顯式模板渲染。如果包括DJANGO.CORE.CONTEXT_PROCESSORS.AUTH在context處理器,則用戶將被添加到每個請求對象http://docs.djangoproject.com/en/dev/ref/templates/api/#id1
事實上:
是的,你可以用上下文處理器做到這一點。 http://docs.djangoproject.com/en/dev/ref/templates/api/#django-core-context-processors-auth
像其他人提到的那樣,您需要使用context_instance=RequestContext(request)
以使用上下文處理器。