【问题标题】:Django post with data returns a HTTP 403 forbidden error带有数据的 Django 帖子返回 HTTP 403 禁止错误
【发布时间】:2012-08-04 21:25:58
【问题描述】:

我已经启动了一个应用程序来使用tastepie 将数据发布到django。但是,我收到一个 http 403 禁止错误。你能帮我绕过那个错误吗?

编辑: 由于我的views.py,我收到了这个错误

  </script>
            </head>
            <body>
                <div id="summary">
                    <h1>MultiValueDictKeyError at /api/recipes/item_new/</h1>
                    <pre class="exception_value">&#39;Key \&#39;data\&#39; not found in &lt;QueryDict: {u\&#39;{ data:\\n        {\\n          name: &quot;Something&quot;,\\n          content: &quot;Anything&quot;\\n        }\\n}\\n\&#39;: [u\&#39;\&#39;]}&gt;&#39;</pre>
                    <table class="meta">
                        <tr>
                            <th>Request Method:</th>
                            <td>POST</td>
                        </tr>
                        <tr>
                            <th>Request URL:</th>
                            <td>http://localhost:8000/api/recipes/item_new/</td>
                        </tr>

【问题讨论】:

  • 这可能是很多事情。是否没有来自您的应用服务器的日志可以检查并提供堆栈跟踪? apache/uwsgi/gunicorn 日志
  • 我正在使用 Pycharm。你知道如何获取堆栈跟踪吗?

标签: django tastypie


【解决方案1】:

您是否遇到了 CSRF 错误?您需要将 csrf_exempt 装饰器添加到您的视图中。

【讨论】:

  • 我添加了它,但我仍然收到一个错误,即 http 500 内部服务器。有趣的是,如果我将视图方法更改为仅 [def item_new(request): return HttpResponse("You did it")] 的基本方法,它就可以工作。所以,我认为,我的数据发布方式或“item_new”方法都有问题。你怎么看?
  • 什么是 500 错误/它发生在哪一行?您在postdata 上调用的所有键都存在吗?您可能想要创建一个 Django 表单来处理数据验证。
【解决方案2】:

根据您的 urls.py,您实际上应该为这个 url /api/recipes/item_new 得到 404 此外,您的资源名为 recipes,因此您的第一个和第二个 url 是准确的,这意味着第二个永远不会被调用。

url(r'^api/', include(recipe_resource.urls)),
url(r'^api/recipes/$', views.item_new()),

尝试在此处切换订单并调整您的 item_new 网址,如下所示

url(r'^api/recipes/item_new$', views.item_new()),
url(r'^api/', include(recipe_resource.urls)),

【讨论】:

猜你喜欢
  • 2020-11-20
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
相关资源
最近更新 更多