Django项目中每个应用程序的不同错误处理程序

时间:2012-09-07 07:10:50

标签: django error-handling

我正在开发一个包含多个应用程序的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

2 个答案:

答案 0 :(得分:2)

Django httphandler404是网站的全局。在您的情况下,您将必须编写一个包装器视图,该视图取决于url(或request中的一些其他属性),返回api app的JSON和web app的HTML。您还可以在api中定义单独的错误处理视图,web可以从包装器视图中调用它们。

参考:Customizing error views

答案 1 :(得分:1)

您可以定义全局404和500处理程序,这些处理程序根据请求内容类型,接受编码和/或路径分派给特定的错误处理程序。这些特定的处理函数当然可以存在于您的app模块中。