Django CSRF在500错误页面上显示一个表单
我得到了一个500错误页面,它有一个表单,但是当抛出500错误页面时,不会生成CSRF令牌。在500错误页面上生成CSRF令牌以使表单post工作的最佳方法是什么?我应该定义自己的自定义500错误视图吗?好的,我尝试定义自定义500错误视图,并为任何有相同问题的人提供了解决方法,如下所示: 定义自定义错误视图Django CSRF在500错误页面上显示一个表单,django,forms,csrf,Django,Forms,Csrf,我得到了一个500错误页面,它有一个表单,但是当抛出500错误页面时,不会生成CSRF令牌。在500错误页面上生成CSRF令牌以使表单post工作的最佳方法是什么?我应该定义自己的自定义500错误视图吗?好的,我尝试定义自定义500错误视图,并为任何有相同问题的人提供了解决方法,如下所示: 定义自定义错误视图 from django.shortcuts import render def server_error(request): vars = {} return rende
from django.shortcuts import render
def server_error(request):
vars = {}
return render(request, '500.html', vars, status=500)
然后在主URL.py中添加:
handler500 = 'your_app.views.errors.server_error'
您必须在ajax请求上传递令牌
var data = {
errorresponse: errorresponse,
'csrfmiddlewaretoken': '{{ csrf_token }}',
}
$.ajax({
type: "POST",
url: "/your-target-url/",
data: data, // this passes data context into view
success: function(data) {
是什么产生了错误?德扬戈?你呢?你的服务器?比方说Django抛出错误并呈现500.htmlIf就是这样,页面设计上应该抛出500服务器错误。你需要找到产生错误的原因,捕获错误,并相应地处理它。那么定义一个视图和csrf保护它呢?这不起作用?@Chris是的,我正试图定义一个自定义视图,但我正在努力找到放置handler500='mysite.views.my_custom_error_view'的位置,django网站说将其放在URLConf中,但具体放在哪里?问题是,当出现真正的问题时,将以HTTP状态代码200(成功)发送响应。当一个AJAX调用认为响应成功而实际上失败时,这让我感到有些不安。将status=500添加到渲染调用中。