0

将值从 Advanced Rest 客户端发布到 Django 的定义会返回“Forbidden(403)”警报在此处输入图像描述

看起来标头中缺少 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})

定义中没有问题,因为它适用于表单输入

4

2 回答 2

2

Post to Django From Advanced Rest Client with CSRF Token: Set CSRF Token for the key "X-CSRFToken" in the Header Section, 添加键值对在正文部分, 选择内容类型为"application/x-www- form-urlencoded”,然后点击发送按钮

在没有 CSRF 令牌的情况下从 Advanced Rest Client 发布到 Django:在正文部分添加键值对,选择内容类型为“application/x-www-form-urlencoded”,然后单击发送按钮。 注意: 请确保为您发布值的定义设置“@csrf_exempt”

如下所示 在此处输入图像描述

于 2015-11-30T06:45:29.593 回答
0

你必须在你的 html 中给出 {% csrf_token %} ;

<html>
    <form method="post">
    {% csrf_token %}
    </form>
</html>
于 2015-11-27T11:55:18.100 回答