django - 如何在 django 中引发 503 错误?

标签 django http-status-code-503 django-middleware

我想制作网站维护页面,并使用复选框字段创建用于网站维护的单例模型,因此,当我从 Django 管理中选中该复选框时,如果我们点击网站的任何 URL,网站应该显示维护页面。

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

最佳答案

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)

关于django - 如何在 django 中引发 503 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46200935/

相关文章:

django - 如何在 Django 模板中实现面包屑?

regex - 我网站上正则表达式特定的问题和搜索功能,处理断开的链接

java - servlet java 抛出的自定义 503 错误页面

Django:自定义中间件被调用两次

python - Openshift 从 Django 应用中查找静态文件

Django 管理员 : missing inlines for some records

asp.net - 服务于应用程序池 'Classic .NET AppPool' 的进程与 Windows Process Activation Service 发生致命通信错误

django - 如何仅为django中的某些路径定义中间件?

python - Django:阻止访问一个应用程序中的特定用户

python - 哪个是检查请求条件的更好方法?