从Advanced Rest客户端向Django的定义发布值返回“Forbidden(403)”alert
看起来标题中缺少CSRF令牌,可以做些什么来摆脱这个问题?以下是我接收POST值的定义
def saveToDb(request):
c = {}
c.update(csrf(request))
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
form_unique_id = form.cleaned_data['form_id']
form_meta_data = form.cleaned_data['form_content']
meta_data = FormMetaData.objects.create(
form_id=form_unique_id,
form_content=form_meta_data
)
meta_data.save()
result = FormMetaData.objects.all()
return render(request, "form_saved.html", {'result': result})
定义中没有问题,因为它适用于表单输入
答案 0 :(得分:2)
使用CSRF令牌从Advanced Rest Client发布到Django: 为标题部分中的键" X-CSRFToken" 设置CSRF标记,在正文部分添加键值对,选择内容类型为&#34 ; application / x-www-form-urlencoded" 并单击发送按钮
从没有CSRF令牌的Advanced Rest Client发布到Django:在正文部分添加键值对,选择内容类型为" application / x-www- form-urlencoded" 并单击“发送”按钮。 注意:强> 请确保为您发布值的定义设置" @ csrf_exempt"
答案 1 :(得分:0)
你必须在你的html中提供{%csrf_token%};
<html>
<form method="post">
{% csrf_token %}
</form>
</html>