我希望能够在发生任何其他请求时显示404页面。但是,当我运行服务器并在chrome上使用POSTMAN扩展执行POST请求时,我得到Django的403显示,而不是我创建的模板。
凸出/ urls.py
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'', include("index.urls")),
url(r'auth/', include("userapp.urls"))
)
索引/ urls.py
urlpatterns = patterns('',
url(r'^$', load_index),
url(r'^admin/', include(admin.site.urls)),
)
索引/ views.py
def load_index(request):
if request.method == "GET":
form = RegistrationForm(auto_id=False)
return render(request, "index/index.html", {"form": form})
else:
# output 404 error
return render(request, "error/404.html", status=404)
答案 0 :(得分:2)
创建Django Web应用程序时, POST/PUT/DELETE
需要csrf token
。这是Django遵循的一种安全策略。
现在,为什么需要这个?因为,按惯例的django Web应用程序是应该运行的应用程序,同时牢记显示和使用的上下文。
您尝试使用的是 POSTMAN
等客户端,主要用于测试REST服务。 (这并不意味着您无法触发托管为Html模板的Web应用程序的请求。)
现在,如果您想从Django Web应用程序中提供 POST 能力API,请考虑@csrf_exempt
。为主题提供的最佳名称:csrf-protection-should-be-disabled-for-just-a-few-views。
如果您希望自己的应用程序具有RESTFul服务,请确保使用正确的工具,Django Rest Framework。 (注意:如果您要为您的网站提供API,那么使用@csrf_extempt
也是一种方式,这会提供一些视图作为POST / PUT的API。