2014-01-26 41 views
2

我有一个我正在渲染的Django模板,但是,我没有必要给它一个上下文(我没有在模板中使用任何变量)。你可以返回没有上下文的render()吗?

是,如果我的渲染/复位功能看起来像这样行不行:

return render(request, 'shipment/createAccount.html') 

此代码是功能上的工作,但我想,以确保没有更好的方式来处理这种情况。

回答

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_) 

...这是越来越深!我们检查基类ContextBaseContext,发现它处理的情况非常好:

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) 
相关问题