django "어떻게"시리즈 7: 오류 보고
7179 단어 django
우편으로 보고하다.
서버 오류
DEBUG가false로 설정되었을 때, 언제든지 코드가 처리되지 않는 이상을 일으켜 서버 오류(500)를 일으키면,django는ADMINS 설정에 있는 사용자 목록에 메일을 보냅니다.이로써 관리자는 오류에 대한 알림을 즉시 알 수 있습니다. 메일 내용에는 오류에 대한 설명, 완전한python 소환, 오류를 일으킨 HTTP 요청에 대한 상세한 정보가 포함되어 있습니다.
주의해야 할 것은 메일을 성공적으로 보내고 싶다면 메일을 보낼 때 필요한 설정을 설정해야 한다는 것이다django Email
django 기본값은root@loaclhost메일을 보내지만, 일부 메일 공급자가 이 주소의 모든 메일을 거부하기 때문에, SERVER 설정을 고려할 수 있습니다.EMAIL
이 설정을 사용하지 않으려면 ADMINS 설정을 제거하십시오
404 오류
django도 나쁜 체인이 발생할 때 메일(404 오류)을 보내는 것으로 설정할 수 있으며, 404 오류에 관해서는 다음 상황이 성립될 때 메일을 보낼 수 있습니다.
너는 IGNORABLE을 조정할 수 있어404_URLS 설정은django에게 404s는 보고하지 않고, 설정은 컴파일된 정규 표현식 대상의 원조이며, 다음은 하나의 예이다.
import re
IGNORABLE_404_URLS = (
re.compile(r'^/apple-touch-icon.*\.png$'),
re.compile(r'^/favicon\.ico$'),
re.compile(r'^/robots\.txt$'),
)
이 비헤이비어를 비활성화하는 가장 좋은 방법은 SEND 를 설정하는 것입니다.BROKEN_LINK_EMAILS는 가짜
오류 보고서 필터링
민감한 정보 필터링
오류 보고는 debug에 매우 유용하기 때문에 오류 보고는 관련 정보를 많이 기록할 수 있을수록 좋다.그러나 일부 특정 유형의 정보는 너무 민감하기 때문에 거슬러 올라가지 않는 것이 좋다. 예를 들어 사용자의 비밀번호와 신용카드 번호 등이다.따라서django는 함수 장식기를 제공하여 제품 환경에서 오류 보고서에서 그 정보를 필터해야 한다는 것을 제어할 수 있도록 합니다:sensitivevariables () 및 sensitivepost_parameters()
sensitive_variables(*variables)
만약 코드의 일부 함수가 로컬 변수를 사용하여 민감한 정보를 저장할 때, 이 장식기로 이 변수의 값이 오류 보고서에 나타나는 것을 예방할 수 있다. 만약 이 장식기에 아무런 인자가 없다면, 모든 변수는 필터될 것이다
from django.views.decorators.debug import sensitive_variables
# user,pw cc
@sensitive_variables('user', 'pw', 'cc')
def process_info(user):
pw = user.pass_word
cc = user.credit_card_number
name = user.name
...
#
@sensitive_variables()
def my_function():
sensitive_post_parameters(*parameters)
유사sensitivevariables (), 이 장식기 필터의 대상은 POST 방법의 HTTP 요청의 변수입니다
from django.views.decorators.debug import sensitive_post_parameters
# POST pass_word credit_card_number
@sensitive_post_parameters('pass_word', 'credit_card_number')
def record_user_profile(request):
UserProfile.create(user=request.user,
password=request.POST['pass_word'],
credit_card=request.POST['credit_card_number'],
name=request.POST['name'])
...
#
@sensitive_post_parameters()
def my_view(request):
...
사용자 정의 오류 보고
sensitive_variables () 및 sensitivepost_patameters () 는 필터된 매개 변수를 표시하는 것일 뿐입니다. 진정한 필터는django의 기본 오류 필터:django입니다.views.debug.SafeExceptionReporterFilter에서 수행했습니다.이 필터는 두 개의 장식기의 알림을 사용하여 대응하는 값을 ****로 바꾸어 필터 효과에 도달합니다.따라서 기본 필터 동작을 사용자 정의하려면 필터 종류를 정의한 다음DEFAULT 에 설정할 수 있습니다EXCEPTION_REPORTER_FILTER 또는 뷰 함수에 필터 클래스 지정
DEFAULT_EXCEPTION_REPORTER_FILTER = 'path.to.your.CustomExceptionReporterFilter'
#
def my_view(request):
if request.user.is_authenticated():
request.exception_reporter_filter = CustomExceptionReporterFilter()
...
필터 클래스는 SafeExceptionReporterFilter 클래스를 상속해야 하며 다음 방법을 덮어써야 할 수도 있습니다.
is_active(self, request): DEBUG가False이면 진짜로 돌아갑니다.is 만active가 진실이어야 다른 필터 동작이 활성화됩니다
get_request_repr(self,request): 요청 대상을 되돌려주는 대표 문자열은 repr(request)으로 얻은 값이지만 POST 매개 변수는 get 를 사용합니다post_patamteters () 방법에서 얻은
get_post_parameters(self,request): 필터된 POST 매개 변수 사전을 되돌려주고 민감한 정보는 * 번호로 대체합니다
get_traceback_frame_variables(self,request,tb frame): 필터된 소거 프레임워크의 로컬 변수를 되돌려주는 사전, 민감한 정보는 * 번호로 대체합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.