我有一个我正在渲染的Django模板,但是,我没有必要给它一个上下文(我不在模板中使用任何变量)。
如果我的渲染/返回功能如下:
return render(request, 'shipment/createAccount.html')
此代码功能正常,但我想确保没有更好的方法来处理这种情况。
答案 0 :(得分:2)
这很好,但render_to_response
是更短,更“香草”的版本。没有多大魔力 - 请参阅https://github.com/django/django/blob/master/django/shortcuts.py
主要的替代方案是,如果不需要视图逻辑/身份验证,您可以将其视为静态文件。
答案 1 :(得分:2)
这是完全可以的。如果我们检查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)