django 사용자 정의 오류 응답

3269 단어
웹을 만들 때 400, 403, 404, 500 등 각종 오류가 자주 발생한다.일반적인 개발은 대응하는 처리를 하고 우호적인 힌트를 주거나 공익 광고 등을 되돌려야 한다.
Django에서는 기본적으로 다음과 같은 일반적인 오류 처리 방법을 제공합니다.
handler404 = 'polls.views.my_custom_page_not_found_view'
handler500 = 'polls.views.my_custom_error_view'
handler403 = 'polls.views.my_custom_permission_denied_view'
handler400 = 'polls.views.my_custom_bad_request_view'

handler*명칭은 모두 고정되어 있어서 임의로 변경할 수 없습니다.Django는 이미 약속한 상태코드에 따라 서로 다른 오류에 대응합니다.그리고 이 설정들은 프로젝트 입구의 urls에 기록해야 합니다.py 파일에서 응용 프로그램의urls에 쓸 수 없습니다.py 파일에서, 그렇지 않으면 효력이 발생하지 않습니다.값에 대해 좋은 보기 함수를 도입하고 절대 경로를 써야 합니다.
응용 프로그램urls를 왜 씁니까?py 파일이 유효하지 않습니까?프로그램이 Http404 이상을 던졌을 때, Django는 404 오류를 처리하는 특별한view 방법을 불러오기 때문입니다.기본적으로, 이것은django입니다.views.defaults.page_not_found, 불러오기 및 렌더링 404.html 템플릿 파일.이것은 우리가 템플릿 루트 디렉터리에 404.를 정의해야 한다는 것을 의미한다.html 템플릿 파일, 이 템플릿 파일은 모든 404 이상에 적용됩니다.
다음은 404 이상 처리를 정의합니다.
먼저 루트urlconf에서handler404 처리 논리를 다음과 같이 설정합니다.
handler404 = "mysite.views.page_not_found"               #mysite app  ,views app   views.py  ,   page_not_found        

# : urlconf 。

그리고 대응하는 app 아래에 함수를 정의합니다. 위에는 mysite 이 app 아래에 정의된views입니다.py에 있습니다.
from django.http import HttpResponseNotFound

def page_not_found(request):
    return HttpResponseNotFound("Fucking!")

그리고 django의 debug 모드를 닫고 ALLOWED 를 정의해야 합니다.HOSTS 옵션.
DEBUG = False

ALLOWED_HOSTS = ["*"]

그리고django를 시작해서 존재하지 않는 페이지에 접근합니다.
[root@test2 ~]# curl 172.16.100.19:80/werwer/
Fucking!

여기에 우리는 문자열 하나만 되돌려 주었을 뿐, 자연히 완전한 html 페이지도 되돌려 줄 수 있다.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
전재 대상:https://www.cnblogs.com/wxzhe/p/10314796.html

좋은 웹페이지 즐겨찾기