1

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

我现在想为应用程序定义不同的 handler404 和 handler500 api,因为它应该在web返回 HTML 时返回 JSON 并且可以使用默认处理程序。

有没有办法覆盖此设置,使其仅对一个应用程序有效?我真的很想避免仅仅因为这个而运行多个服务器实例。

谢谢西蒙

4

2 回答 2

2

Djangohttphandler404对于一个站点来说是全局的。在您的情况下,您将必须编写一个包装器视图,该视图取决于 url(或 中的某些其他属性request)为应用程序返回 JSON,为api应用程序返回 HTML web。您还可以在其中定义单独的错误处理视图,apiweb可以从包装器视图中调用它们。

参考:自定义错误视图

于 2012-09-07T07:18:10.733 回答
1

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

于 2012-09-07T07:17:22.660 回答