csrf令牌跟进
你好,并提前谢谢你。 这是来自以下线程的后续问题(不知道我是否应该在那里发布或开始新线程...:
即使我拥有{%csrf_token%},CSRF令牌缺失或不正确
我不知道我需要用代码来完成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})
我假设我们正在谈论的playerAdd视图-你需要传递RequestContext那里的响应。
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', RequestContext(request, {'form':form}))
代码中的第一行很难理解,甚至不是有效的python。 您不能使用功能块外部的return 。
上一篇: csrf token Follow up
