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