gpt4 book ai didi

python - CSRF token 丢失或不正确,即使我有 {% csrf_token %}

转载 作者:太空狗 更新时间:2023-10-29 13:24:46 26 4
gpt4 key购买 nike

在我的 views.py 文件中引用此方法时出现此错误:

def AddNewUser(request):
a=AMI()
if(request.method == "POST"):
print(request.POST)
# print(request['newUser'])
# print(request['password'])
return render_to_response("ac/AddNewUser.html", {})

但是我的其他功能工作得很好。只是我的 HTML 文件中的这个按钮不起作用。

<form name="AddNewUser" action="/ac/AddNewUser" method="post"> {% csrf_token %} <input type="submit" name="addNewUser" id="addNewUser" value="Create User"></form>

如您所见,我已经获得了 {% csrf_token %},但它仍然无法正常工作。我也知道有些人会遇到这个问题,如果他们的 settings.py 中没有 MIDDLEWARE_CLASSES 但我已经正确插入了。是什么导致了这个问题?错误中唯一的另一行是:“ View 函数使用 RequestContext 作为模板,而不是 Context。”但我不知道那是什么意思。

最佳答案

你必须使用 RequestContext对象获取上下文,然后将结果传递给您的render_to_response() 函数。 RequestContext 添加所需的 CSRF token 。

from django.template import RequestContext
from django.shortcuts import render_to_response

csrfContext = RequestContext(request)
return render_to_response(some_template, csrfContext)

作为旁注,您还可以使用 RequestContext 添加用于模板的上下文/字典。例如,我经常使用:

initialData = {'form': theForm, 'user_status': 'online'}
csrfContext = RequestContext(request, initialData)
return render_to_response(show_template, csrfContext)

作为对RequestContext 功能的(简要)解释:大多数中间件创建了一个叫做上下文处理器 的东西,它只是一个提供上下文(字典)的函数变量。 RequestContext 查找所有可用的上下文处理器,获取它们的上下文,并将它们全部附加到单个(巨大的)上下文。

关于python - CSRF token 丢失或不正确,即使我有 {% csrf_token %},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5922773/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com