【发布时间】:2010-04-02 15:45:42
【问题描述】:
我想创建一个装饰器,如果 GET 参数“raw”等于“1”,它将允许我返回视图的原始或“字符串”表示。这个概念有效,但我坚持如何将上下文传递给我的渲染器。到目前为止,这是我所拥有的:
from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.template.loader import render_to_string
def raw_response(template):
def wrap(view):
def response(request,*args,**kwargs):
if request.method == "GET":
try:
if request.GET['raw'] == "1":
render = HttpResponse(render_to_string(template,{}),content_type="text/plain")
return render
except Exception:
render = render_to_response(template,{})
return render
return response
return wrap
目前,{} 只是作为一个占位符。最终,我希望能够传递这样的字典:
@raw_response('my_template_name.html')
def view_name(request):
render({"x":42})
感谢任何帮助。
【问题讨论】: