2017-09-13 2 views
0

사이트 유지 관리 페이지를 만들고 싶습니다. 확인란 유지 필드를 사용하여 사이트 유지 관리를위한 싱글 톤 모델을 만듭니다. 장고 관리자의 확인란을 선택하면 사이트의 유지 관리 페이지가 표시됩니다. 장고에서 503 오류를 발생시키는 방법은 무엇입니까?

나는 503 상태 코드가 서비스와 관련된 확인 UNAVAILABLE 그래서 내 코드에서 503 오류가 수동으로 제기하고 또한 사용자 지정 서식 (503) 오류 인상을 렌더링 할 수있는 방법.

+0

은 기본적으로 500을 반환? 아니면 내가 수동으로 오류가있는 경우는 excepción을하고 당신은 내가 당신의 방법을 이해하지 못했다 –

+0

호를 할 수있는, 역 추적 무엇인지 말해 . 미들웨어에 raise 503의 예제 코드를 추가 할 수 있습니까? –

+0

를 제기하는 코드를 작성하려는 예외 –

답변

0
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) 
0

이러한 종류의 오류 및 응답은 django.http에서 찾을 수 있습니다.

"서비스를 사용할 수 없음"에 대한 정확한 일치 사항은 없습니다.

custom middleware을 사용하여 여러 가지 방법이 있습니다.

수 있습니다 : Raise an custom exceptionthe view is processed (당신은 그것을 PageInMaintenanceException라고 부를 수 있습니다). process your exception 오른쪽 헤더가있는 렌더링 된 템플릿을 반환합니다.

또는 the view is processed과 유지 관리중인 사이트 집합이 호출 될 때 오른쪽 헤더가있는 렌더링 된 템플릿을 반환하십시오.

+0

을 원하는 템플릿을 올릴 수 503 –

+0

맞춤 예외를 발생시키는 방법에 대한 링크를 추가했습니다. 더 구체적인 코드를 설정하는 방법에 대한 자세한 정보가 필요합니다. [Django sites framework] (https://docs.djangoproject.com/ko/1.11/ref/contrib/sites/#module-django.contrib.sites)를 사용하고 있습니까?)? 사이트가 유지 보수 중이면 컨텐츠 만 편집 할 예정입니까 아니면 코드를 변경하여 웹 사이트를 실행중인 인스턴스를 종료 할 예정입니까? "사이트 유지 관리를위한 싱글 톤 모델"은 어떻게 생겼습니까? –

관련 문제