Django의 사용자 정의 중간부품 모듈 - Stackoveflow 답안 자동 검색
요청 기간:
process_request(request)
process_view(request, view_func, view_args, view_kwargs)
반환 기간:
process_exception(request, exception) (only if the view raised an exception)
process_template_response(request, response) (only for template responses)
process_response(request, response)
사용자 정의가 필요한 경우 MIDDLEWARE해당 경로의 파일을 CLASSES에 추가하면 됩니다.
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
// Middleware
'app_name.middleware.StackOverflowMiddleware',
)
수요 장면
평상시django 개발 디버깅에서 이런저런 exception 오류가 발생할 수 있습니다. 우리는 간단한 중간부품을 사용자 정의합니다.django의 사용자 정의 절차는 매우 간단합니다.processexception 방법
exception의name와 정보에 따라 Stackoveflow의 인터페이스를 호출하여 debug가 틀렸을 때 관련 답안을 자동으로 검색하여 시간을 절약하고 실현하기가 매우 간단합니다
비고: 사고방식을 소개하기 위해서만 온라인 코드를 이렇게 사용하지 마세요.
코드 구현
app 디렉터리에서middleware.py 파일
import requests
from django.conf import settings
class StackOverflowMiddleware(object):
def process_exception(self, request, exception):
if settings.DEBUG:
intitle = u'{}: {}'.format(exception.__class__.__name__, exception.message)
url = 'https://api.stackexchange.com/2.2/search'
params = {
'order': 'desc',
'sort': 'votes',
'site': 'stackoverflow',
'pagesize': 3,
'tagged': 'python;django',
'intitle': intitle
}
r = requests.get(url, params=params)
questions = r.json()
if len(questions['items']) > 0:
print '
The stackoverflow answer top 3 is :
'
for question in questions['items'][:3]:
print '
'
print question['title']
print question['link'] + '
'
else :
print '
stackoverflow answer not found
'
return None
효과는 다음과 같습니다.
Django 버전: 1.9.4python 버전: 2.7.6 디버깅 시 settings.DEBUG 켜기 모드
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.