代码之家  ›  专栏  ›  技术社区  ›  pajton

是否可以从中间件呈现模板?

  •  1
  • pajton  · 技术社区  · 15 年前

    我有一个中间件做一些处理。在某些情况下,它会引发异常,用户会看到 500.html 模板-正确响应500 HTTP状态。

    现在,在某些例外情况下,我希望呈现不同于默认的模板 500.html(英文) . 是否有可能/如何实现?

    3 回复  |  直到 8 年前
        1
  •  1
  •   Reto Aebersold    8 年前

    你可以抓住那些例外 return a HttpResponse object 以呈现自定义模板。或者,重定向也是合适的。

        2
  •  0
  •   TomTom    15 年前

    对。。。没有。

    你可以呈现你想要的任何东西(你的网络服务器有一个很好的解释如何做),但用户是否会看到这是他的选择-通过他的浏览器设置。可以渲染某些内容,但浏览器仍然显示标准错误页。

        3
  •  0
  •   maersu    15 年前

    中间件可能是一种解决方案:

    class MyExceptionMiddleware:
       def process_exception(self, request, exception):
    
         if isinstance(exception, CustomException):
           template = loader.get_template('Other500.html')
           context = RequestContext(request, {'message': 'Custom Message'})
           return HttpResponseForbidden(template.render(context))
    
         return None
    

    别忘了在settings.py中注册中间件:

    MIDDLEWARE_CLASSES = (
        ....
        'app.middleware.MyExceptionMiddleware',
    
    推荐文章