【发布时间】:2023-03-10 08:05:01
【问题描述】:
我正在尝试设置 Django API(一个 POST API 端点)。我希望有相同的 URL 路径指向相同的函数,因为它是 POST 还是 GET,所以处理方式不同。因此,我使用了这样的方法
def handle_post(request):
dict = {}
dict['email'] = "test"
if request.method == "POST":
return HttpResponse(json.dumps(dict), content_type="application/json")
在url.py中,我有以下代码
router = routers.DefaultRouter()
router.register(r'notes', UsernotesViewSet)
urlpatterns = patterns('',
url(r'^', include(router.urls)),
url(r'^admin/', include(admin_site.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^docs/', include('rest_framework_swagger.urls')),
url(r'^example/postrequest', handle_post),
)
但是当我对 URL http://127.0.0.1:8000/example/postrequest?requestid=abc&starthour=10 执行 POST 时,我无法完成这项工作。我没有发布任何内容,只是将方法从 httpclient 上的 GET 更改为 POST 以尝试此 API。如果我没有在 URL 上发布任何内容可以吗?
我收到 403 错误,如下所示:
禁止 (403)
CSRF 验证失败。请求中止。
您看到此消息是因为此站点在提交表单时需要 CSRF cookie。出于安全原因,需要此 cookie,以确保您的浏览器不被第三方劫持。 如果您已将浏览器配置为禁用 cookie,请至少为该站点或“同源”请求重新启用它们。
感谢任何帮助。
【问题讨论】:
标签: python django http-post http-status-code-403