Django CSRF在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

我得到了一个500错误页面,它有一个表单,但是当抛出500错误页面时,不会生成CSRF令牌。在500错误页面上生成CSRF令牌以使表单post工作的最佳方法是什么?我应该定义自己的自定义500错误视图吗?

好的,我尝试定义自定义500错误视图,并为任何有相同问题的人提供了解决方法,如下所示:

定义自定义错误视图

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添加到渲染调用中。