【发布时间】:2016-07-01 05:08:10
【问题描述】:
Django 1.7
DRF 3.3.2
Python 2.7
每当我输入无效的 url 时,我想返回一个带有 {'detail': 'Not found'.} 的 404 响应。
但是,只有当我输入带有无效查找参数的有效 url 时,我才会得到这个。
例如,如果我在以下位置发出 GET 请求:
http://127.0.0.1:8000/api/boxes/3e1659f3-9238-4b8f-a580-9b096d95bbfa/
我会得到请求的对象。
如果我做同样的事情:
http://127.0.0.1:8000/api/boxes/3e1659f3-9238-4b8f-a580-9b096d95bbfajibbersihherelalalalalalala/
我会在正文中收到带有{'detail': 'Not found'.} 消息的 404。
如果我用这个网址尝试同样的事情:
http://127.0.0.1:8000/api/boxesevenbiggerjibberish
我会得到一个带有这个错误的 404:
这会破坏我的应用程序。
所以问题是,我如何设置我的网址,以便使用{'detail': 'Not found'.} 消息处理每个无效的网址(这不会破坏我的应用程序)。
更新
给定的答案将为您的整个项目(所有应用程序)设置自定义 404 视图。
如果您想为项目中的特定应用程序设置自定义 404(例如,您希望 API 返回 json,但希望您的应用程序返回一些自定义模板),那么您可以设置一个 urlpattern 来捕获所有内容:
myapp/urls.py
urlpatterns = [
...,
...,
url(r'^.*/$', views.error_page, name='error_page')
]
确保 url 是最后一个模式(否则每个 url 都会调用您的自定义 error_page 视图)。
【问题讨论】:
标签: python django django-rest-framework