django:通用类视图 + POST = HTTP 405(方法不允许)
最近我开始把一些视图函数转换成通用视图。 把一个原本应该处理POST请求(通过AJAX表单)的函数转换后,结果出现了“405 方法不允许”的HTTP异常。 我确定这不是因为CSRF问题:AJAX发送了有效的令牌,把通用视图改回视图函数(在测试案例中,它们基本上是一样的)就解决了这个问题,最后,为了测试,我还禁用了CSRF中间件。 有没有人遇到过类似的问题?
1 个回答
17
我猜你是在使用基于类的视图。如果是这样的话,你需要在你的视图里定义一个叫做 post
的方法,或者使用一个可以做到这一点的混合类,比如 django.views.generic.edit.ProcessFormView
。如果你想完全理解为什么需要这样做,可以看看 dispatch
方法,它在 django.views.generic.base.View
里。