Skip to main content
 首页 » 编程设计

python之csrf token 跟进

2025年05月04日8bhlsheji

您好,提前谢谢您。这是来自以下线程的跟进问题(不确定我是否应该在那里发布或开始一个新线程......:

CSRF token missing or incorrect even though I have {% csrf_token %}

我不确定我需要对代码做什么才能使 csrfContext 正常工作。我正在尝试使用 ModelForm 将数据收集到模型并将其写入 MYSQL 表。我收到错误:

Reason given for failure: 
    CSRF token missing or incorrect.

代码如下:

 
 
    from django.shortcuts import render_to_response 
    from djengo.template import RequestContext 
    from django.http import HttpResponse, HttpRequest, HttpResponseRedirect 
    from acmetest.models import Player 
    from acmetest.models import PickForm 
 
    csrfContext = RequestContext(request) 
    return render_to_response('makepick.html', csrfContext) 
 
    def playerAdd(request, id=None): 
        form = PickForm(request.POST or None, 
                           instance=id and Player.objects.get(id=id)) 
 
        # Save new/edited pick 
        if request.method == 'POST' and form.is_valid(): 
            form.save() 
            return HttpResponseRedirect('/draft/') 
 
        return render_to_response('makepick.html', {'form':form}) 
 

再次,

感谢您的帮助!

dpbklyn

请您参考如下方法:

因此更新您的代码:

from django.shortcuts import render 
# from djengo.template import RequestContext <- this is not valid. 

正如 Yuji 所指出的,这两行不是有效的 python,此外,如果您使用 render,则它们不是必需的。捷径。

# csrfContext = RequestContext(request) 
# return render_to_response('makepick.html', csrfContext) 

修改您的返回行:

 # return render_to_response('makepick.html', {'form':form}) 
   return render(request,'makepick.html',{'form':form})