如何在django1.5中使用Template与TemplateView?

时间:2013-05-15 12:31:01

标签: django

我正在尝试将我的应用从django 1.4移植到1.5。我改变了所有出现的情况:

return direct_to_template(request, template)

为:

return TemplateView.as_view(template_name=template)(request)

这适用于我使用GET的所有表单,但对于使用POST的表单,我最终在浏览器上显示空白页面。任何地方都没有错误,只是一个空白页。

在1.5中我用什么代替direct_to_template进行POST?

3 个答案:

答案 0 :(得分:4)

有一个TemplateResponse响应类,它采用与direct_to_template快捷方式相同的参数。你可以替换并保持安全

return TemplateResponse(request, template)

答案 1 :(得分:3)

render shortcut可用作此direct_to_template的替代品。它采用与direct_to_template相同的参数,因此它可以是一个简单的查找和替换。

return direct_to_template(request, template)

变为

return render(request, template)

答案 2 :(得分:2)

一般情况下,您不必显式返回这样的TemplateView,只需将其放入网址即可完成。

现在,你没有得到Post的响应的原因是TemplateView只定义了一个GET方法

因此,您需要创建一个继承自TemplateView的新类,以便自己实现POST方法。

我的建议是寻找另一个CBV并查看是否更符合您的需求,也许FormView就足够了

https://github.com/django/django/blob/master/django/views/generic/base.py#L147