Django - URL 의 Reverse 와 Resolve
# viewname url_name
# args , ,
# : url_name URL
reverse(viewname[, urlconf
=
None
, args
=
None
, kwargs
=
None
, current_app
=
None
])
# path url
# : url url_name
resolve(path, urlconf
=
None
)
그럼 어떤 상황 에서 우리 가 그것들 을 써 야 합 니까?첫째, 프로젝트 에 사이트 주 소 를 제시 해 야 한다 면 (예 를 들 어 웹 페이지 재 설정 등) Reverse 함수 에 해당 하 는 url 에 전달 할 수 있 습 니 다.name 및 필요 한 매개 변 수 는 해당 url 을 생 성 합 니 다.둘째, 디 버 깅 단계 에서 Resolve 함 수 를 통 해 사이트 의 URL 대응 관계 가 원 하 는 대로 되 는 지 테스트 할 수 있 습 니 다.
2. 간단 한 예 로 my site / urls. py 를 다음 코드 로 수정 합 니 다.
from
django.conf.urls
import
patterns, include, ur
home
=
'hello.views.home'
urlpatterns
=
patterns('',
url(r
'^test$'
, home, name
=
"test_hello"
),
url(r
'(\d{4})/(\d{2})$'
, home, name
=
"test_hello_2"
),
)
사이트 루트 디 렉 터 리 에서 실행: python manage. py 셸 은 Django 가 제공 하 는 셸 환경 에 들 어 갑 니 다. 그리고 다음 명령 을 순서대로 입력 하면 출력 결 과 를 잘 이해 할 수 있 습 니 다.
# , xd( ) ,
from
django.core.urlresolvers
import
reslove, reverse
url
=
resolve(
'/2012/10'
)
print
url.url_name
# test_hello_2
reverse(
'test_hello_2'
,args
=
(
'2012'
,
'10'
))
# /2012/10
3. URL Include 의 목적 은 하나의 Project 모듈 이 증가 할 때 루트 디 렉 터 리 에서 하나의 urls. py 만 유지 하여 전체적인 URL 대응 관 계 를 관리 하 는 것 이 적절 하지 않 습 니 다.모든 모듈 이 자신 과 관련 된 URL 을 관리 할 수 있 고 루트 디 렉 터 리 에 있 는 urls. py 는 그것들 을 모두 포함 시 키 는 것 만 책임 지면 문 제 를 해결 하지 않 습 니까?이것 은 약간 C / C + + 안의 파일 개념 같다.URL Include 템 플 릿 은 다음 과 같 습 니 다.
# regex
# URL_FILE_NAME urls.py
url(regex, include(
'URL_FILE_NAME'
))
4: Include 의 예 는 hello 파일 에서 urls. py 를 새로 만 듭 니 다. 다음 과 같 습 니 다.
from
django.conf.urls
import
patterns, include, url
home
=
'home'
urlpatterns
=
patterns('',
url(r
'^$'
, home),
)
그리고 mysite / urls. py 를 수정 하고 다음 줄 을 추가 하면 됩 니 다.
url(r
'^'
, include(
'hello.urls'
)),
현재 python manage. py runserver 를 통 해 서버 를 시작 합 니 다. 사이트 주소 에 localhost: 8000 을 입력 하면 정상 으로 표시 되 지 않 습 니까?정상 이 라면 우리 include 가 성공 했다 는 뜻 이다.
알 아 차 렸 는 지 모 르 겠 습 니 다. my site / urls. py 의 정규 표현 식 에는 $가 없습니다.원래 include 의 용법 에서 하위 모듈 의 urls 를 맞 추 려 면 먼저 부모 모듈 의 매 칭 을 통 해 예 를 들 어 my site / urls. py 의 매 칭 이 '^ t' 라면 include 에 전 달 될 때 t 이후 부터 시작 합 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.