Django 사용자 정의 라우팅 변환기 구현
사용자 정의 경로 변환기
때때로 위에 내장된 URL 변환기는 우리의 수요를 만족시키지 못하기 때문에django는 우리에게 인터페이스를 제공하여 우리로 하여금 자신의 URL 변환기를 정의할 수 있게 한다
django 내장된 경로 변환기 원본 분석
루트 변환기를 사용자 정의하기 전에,django에 내장된 루트 변환기가 어떻게 쓰였는지, 원본 경로fromdjango를 살펴보겠습니다.urls
import converters
class IntConverter:
regex = '[0-9]+'
def to_python(self, value):
return int(value)
def to_url(self, value):
return str(value)
class StringConverter:
regex = '[^/]+'
def to_python(self, value):
return value
def to_url(self, value):
return value
class UUIDConverter:
regex = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'
def to_python(self, value):
return uuid.UUID(value)
def to_url(self, value):
return str(value)
class SlugConverter(StringConverter):
regex = '[-a-zA-Z0-9_]+'
class PathConverter(StringConverter):
regex = '.+'
DEFAULT_CONVERTERS = {
'int': IntConverter(),
'path': PathConverter(),
'slug': SlugConverter(),
'str': StringConverter(),
'uuid': UUIDConverter(),
}
REGISTERED_CONVERTERS = {}
def register_converter(converter, type_name):
REGISTERED_CONVERTERS[type_name] = converter()
get_converters.cache_clear()
위에서 우리가 매우 분석할 수 있듯이 django에 내장된 경로 변환기는 먼저 하나의 클래스를 정의했고 클래스에서 하나의 클래스 속성regex를 정규 표현식의 값으로 정의한 다음에 두 가지 방법을 정의했다. to_python 및 to_url, 마지막으로register_converter 함수, 경로 변환기를django에 등록합니다우리는 여기서 그에게 5단계로 나누어 주었다.
1. 컨버터를 만듭니다.py, 파일에 클래스를 정의합니다.
2. 클래스에서 하나의 속성regex를 정의합니다. 이 속성은 url 변환기 규칙을 저장하는 정규 표현식입니다.
3. 실현 to_python(self,value) 방법입니다. 이 방법은 URL의 값을 변환해서 보기 함수에 전달합니다.
4. 실현 to_url(self,value) 방법입니다. 이 방법은 url반전을 할 때 들어오는 매개 변수를 변환하여 정확한 url로 연결하는 것입니다.
5. 정의된 변환기를 django에 등록합니다.
작은 사례
다음은 네 자리 숫자의 경로가 일치하는 변환기를 정의합니다
새 컨버터를 만듭니다.py 파일, 코드는 다음과 같습니다.
class FourDigitYearConverter:
#
regex = '[0-9]{4}'
def to_python(self, value):
return value
def to_url(self, value):
return '%04d' % value
urls에 있습니다.py 파일에 사용자 정의 변환기 등록
from django.urls import path, converters
#
register_converter(converters.FourDigitYearConverter, 'yyyy') # yyyy
urlpatterns = [
path('articles/<yyyy:year>', views.articles_yyyy),
]
이렇게 하면 우리는 4자리 숫자의 URL 주소와 일치할 수 있다이 Django 사용자 정의 루트 변환기 구현에 관한 글은 여기까지 소개되었습니다. 더 많은 Django 루트 변환기 내용은 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.