从Advanced Rest Client发布Django的定义

时间:2015-11-27 11:52:14

标签: python django rest post advanced-rest-client

从Advanced Rest客户端向Django的定义发布值返回“Forbidden(403)”alert enter image description here

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

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

2 个答案:

答案 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"

如下图所示 enter image description here

答案 1 :(得分:0)

你必须在你的html中提供{%csrf_token%};

<html>
    <form method="post">
    {% csrf_token %}
    </form>
</html>