【问题标题】:Post to Django's definition from Advanced Rest Client从 Advanced Rest Client 发布到 Django 的定义
【发布时间】:2016-03-01 14:55:34
【问题描述】:

从 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})

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我知道,我在问如何从其他客户端发布它?请回答我的问题
    • 然后请在您的问题中添加不起作用的相关代码
    【解决方案2】:

    使用 CSRF 令牌从 Advanced Rest 客户端发布到 Django: 在 Header Section 中为键 "X-CSRFToken" 设置 CSRF Token,在 body 部分添加键值对,选择 Content type 为 "application/x-www-form -urlencoded" 并点击发送按钮

    Post to Django from Advanced Rest Client without CSRF Token: 在正文部分添加键值对,选择内容类型为 "application/x-www-form-urlencoded " 并单击发送按钮。 注意: 请确保为您发布值的定义设置 "@csrf_exempt"

    如下图

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-23
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 2017-06-24
      • 1970-01-01
      相关资源
      最近更新 更多