我有一個我正在渲染的Django模板,但是,我沒有必要給它一個上下文(我沒有在模板中使用任何變量)。你可以返回沒有上下文的render()嗎?
是,如果我的渲染/復位功能看起來像這樣行不行:
return render(request, 'shipment/createAccount.html')
此代碼是功能上的工作,但我想,以確保沒有更好的方式來處理這種情況。
我有一個我正在渲染的Django模板,但是,我沒有必要給它一個上下文(我沒有在模板中使用任何變量)。你可以返回沒有上下文的render()嗎?
是,如果我的渲染/復位功能看起來像這樣行不行:
return render(request, 'shipment/createAccount.html')
此代碼是功能上的工作,但我想,以確保沒有更好的方式來處理這種情況。
這很完美。如果我們檢查的render
的聲明,我們看到它返回
return HttpResponse(loader.render_to_string(*args, **kwargs),
**httpresponse_kwargs)
在那之後,我們檢查的render_to_string
定義:
def render_to_string(template_name, dictionary=None, context_instance=None):
-snip-
if not context_instance:
return t.render(Context(dictionary))
所以,很顯然,這是確定不提供上下文字典。可以肯定,我們檢查如何Context
處理的情況時dictionary=None
:
super(Context, self).__init__(dict_)
...這是越來越深!我們檢查基類Context
,BaseContext
,發現它處理的情況非常好:
def __init__(self, dict_=None):
self._reset_dicts(dict_)
def _reset_dicts(self, value=None):
builtins = {'True': True, 'False': False, 'None': None}
self.dicts = [builtins]
if value is not None:
self.dicts.append(value)
這很好,但render_to_response
是更短,更「香草」的版本。沒有太多的魔力 - 看到在django https://github.com/django/django/blob/master/django/shortcuts.py
的實際代碼主要的替代方案是,如果沒有視圖邏輯/ auth要求,你可以把它當作一個靜態文件來代替。