Pau*_*jan 4 django django-templates
似乎大多数文档都建议:
template_values = {}
template_values["foo"] = "bar"
return render_to_response(path, template_values, context_instance=RequestContext(request)
Run Code Online (Sandbox Code Playgroud)
为什么我不使用:
template_values = RequestContext(request)
template_values["foo"] = "bar"
return render_to_response(path, template_values)
Run Code Online (Sandbox Code Playgroud)
RequestContext不继承自dict,因此不能保证实现所有dict的方法(并且它没有),并且任何对 dict 进行操作的函数也可能无法工作。最后,没有理由这样做;最好将其视为其实现可能会更改的不透明对象。使用 adict提供模板的上下文具有RequestContext.
为了生成更少的样板代码,这里有两个我使用的实用函数。我将它们放在我项目底部的一个shortcuts.py 文件中。
from django.template import RequestContext
def render_template(request, template, data=None):
"Wrapper around render_to_response that fills in context_instance for you."
response = render_to_response(template, data,
context_instance=RequestContext(request))
return response
def boilerplate_render(template):
"Factory function for creating simple views that only forward to a template"
def view(request, **kwargs):
response = render_template(request, template, kwargs)
return response
return view
Run Code Online (Sandbox Code Playgroud)
用法:
def my_view(request):
# Do stuff here...
return render_template(request, 'my_template.html', {'var1': 'value', etc..})
my_view2 = boilerplate_render('my_template2.html') # Takes no context parameters
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11864 次 |
| 最近记录: |