Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 是否可以从中间件呈现模板?_Django_Django Templates_Render_Middleware - Fatal编程技术网

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

Django 是否可以从中间件呈现模板?,django,django-templates,render,middleware,Django,Django Templates,Render,Middleware,我有一个中间件,可以进行一些处理。在某些情况下,它会引发异常,用户会看到my500.html模板-正确响应500 http状态 现在,在一些例外情况下,我希望呈现不同于默认500.html的模板。有可能/如何实现这一点吗?是的。。。没有 你可以呈现你想要的任何东西(你的web服务器有一个很好的解释如何做到这一点),但用户是否会看到这是他的选择-通过他的浏览器设置。您可以呈现某些内容,但浏览器仍显示标准错误页。中间件可能是一种解决方案: class MyExceptionMiddleware:

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

现在,在一些例外情况下,我希望呈现不同于默认
500.html
的模板。有可能/如何实现这一点吗?

是的。。。没有


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

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

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',

您可以捕获这些异常并呈现自定义模板。或者重定向也是合适的