我有一个我正在渲染的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要求,你可以把它当作一个静态文件来代替。