Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 403模板显示而不是404_Python_Django - Fatal编程技术网

Python 403模板显示而不是404

Python 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.

我希望能够在任何其他请求发生时显示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.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请求发生时传递表单。帖子不会生成表单。