首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django中产生503错误?

问如何在django中产生503错误?
EN

Stack Overflow用户
提问于 2017-09-13 15:04:45
回答 2查看 5.2K关注 0票数 1

我想要制作站点维护页面,我用复选框字段创建站点维护的单例模型,所以当我从Django admin选中该复选框时,如果我们点击网站的任何URL,站点应该会显示维护页面。

我检查了503状态代码与服务不可用的有关,所以我如何在代码中手动引发503错误,并且在503错误引发时也要呈现自定义模板。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-17 07:37:20

代码语言:javascript
复制
from django.urls import resolve
from django.utils.deprecation import MiddlewareMixin
from django.http import HttpResponse
from django.template import loader

from .models import SiteMaintenance



class SiteMaintenanceMiddleware(MiddlewareMixin):
    def check_maintenance(self):
        site_maintenance = SiteMaintenance.get_object()
        return site_maintenance.is_maintenance

    def process_view(self, request, view_func, view_args, view_kwargs):
        if self.check_maintenance() and not request.user.is_staff:
            return HttpResponse(loader.render_to_string('503.html'), status=503)
票数 1
EN

Stack Overflow用户

发布于 2017-09-13 15:33:59

这种错误和响应可以在django.http中找到。

正如您所看到的,“服务不可用”没有确切的匹配。

使用自定义中间件有多种方法来实现这一点。

您可以:引发自定义异常 when 视图被处理。 (您可以称之为PageInMaintenanceException)。然后处理异常返回一个带有右标头的呈现模板。

或者简单地说:当调用视图被处理。和维护下的站点设置时,返回一个带有正确标头的呈现模板。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46200935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档