3

我正在尝试将我的应用程序从 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?

4

3 回答 3

4

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

return TemplateResponse(request, template)
于 2013-05-15T12:53:38.193 回答
3

render快捷方式可用作direct_to_template此用法的替代品。它采用相同的参数,direct_to_template因此可以进行简单的查找和替换。

return direct_to_template(request, template)

变成

return render(request, template)
于 2013-05-15T12:44:49.373 回答
2

通常,您不必像那样显式返回 TemplateView,只需将其放在您的 url 中即可。

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

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

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

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

于 2013-05-15T12:44:44.987 回答