Python 403模板显示而不是404
我希望能够在任何其他请求发生时显示404页面。然而,当我运行服务器并在chrome上使用POSTMAN扩展执行POST请求时,我得到的是Django显示的403,而不是我创建的模板 proj/url.pyPython 403模板显示而不是404,python,django,Python,Django,我希望能够在任何其他请求发生时显示404页面。然而,当我运行服务器并在chrome上使用POSTMAN扩展执行POST请求时,我得到的是Django显示的403,而不是我创建的模板 proj/url.py urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), url(r'', include("index.urls")), url(r'auth/', include("userapp.
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'', include("index.urls")),
url(r'auth/', include("userapp.urls"))
)
index/url.py
urlpatterns = patterns('',
url(r'^$', load_index),
url(r'^admin/', include(admin.site.urls)),
)
index/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)
创建Django web应用程序时,
POST/PUT/DELETE
需要csrf令牌。这是Django遵循的一种安全策略
现在,为什么需要这样做?因为,按照约定,django web应用程序是应用程序,在运行时应牢记显示和使用的上下文
您尝试使用的是类似于POSTMAN的客户端,它主要用于测试REST服务。(这并不意味着您不能对作为Html模板托管的web应用程序发出请求)
现在,如果您想从Django Web应用程序中提供<强> POST <强> API,请考虑<代码> @ CSRFY豁免。为主题指定的最佳名称:
如果您希望应用程序具有RESTFul服务,请确保使用正确的工具。(注意:如果您为站点提供API,那么使用@csrf\u extempty
也是一种方法,它可以提供一些视图作为POST/PUT的API)。问题是,由于您使用的是django表单,因此需要将{csrf\u token}
数据作为POST的一部分。或者,出于开发目的,您可以使用@csrf\u employ
装饰器,然后找出一种干净的方法来包含管理数据(csrf)@karthikr,以便任何类型的POST请求都需要传递csrf令牌?我没有在POST请求中使用表单。我在view@karthikr我只在GET请求发生时传递表单。帖子不会生成表单。