我正在开发一个包含多个应用程序的Django 1.3项目。项目结构有点像这样:
- MyProject
- manage.py
- MyProject
- settings.py
- url.py
- wsgi.py
- core
- models.py
- web
- urls.py
- views.py
- api
- urls.py
- views.py
我现在想为api
应用程序定义不同的handler404和handler500,因为它应该返回JSON,而web
返回HTML并且可以使用默认处理程序。
有没有办法覆盖此设置,因此它只适用于一个应用程序?我真的很想避免因为这个而运行多个服务器实例。
谢谢Simon
答案 0 :(得分:2)
Django httphandler404
是网站的全局。在您的情况下,您将必须编写一个包装器视图,该视图取决于url(或request
中的一些其他属性),返回api
app的JSON和web
app的HTML。您还可以在api
中定义单独的错误处理视图,web
可以从包装器视图中调用它们。
答案 1 :(得分:1)
您可以定义全局404和500处理程序,这些处理程序根据请求内容类型,接受编码和/或路径分派给特定的错误处理程序。这些特定的处理函数当然可以存在于您的app模块中。