Django HTML 의 URL 변수 와 view. py urls. py 의 관계
4217 단어 djangourls. py 의 관계
url(r^/account/$’, views.index, name=index),
이것 은 네 개의 매개 변 수 를 받 을 수 있 습 니 다. 각각 두 개의 필수 매개 변수 입 니 다. regex, view 와 두 개의 선택 가능 한 매개 변수: kwargs, name 입 니 다. 다음은 이 네 개의 매개 변 수 를 상세 하 게 소개 합 니 다.
regex
regex 는 정규 표현 식 을 대표 합 니 다. regex 와 일치 하 는 URL 요청 은 url () 함수 에 대응 하 는 두 번 째 매개 변수 view 가 대표 하 는 보기 함수 에 실 행 됩 니 다.주의해 야 할 것 은 정규 표현 식 이 URL 의 도 메 인 이름과 조회 인자 와 일치 하지 않 습 니 다.
예:
http://www.foofish.net/article/?page=3, Django article/。
정규 표현 식 은 URLconf 모듈 을 불 러 올 때 컴 파일 되 기 때문에 일치 할 때 속도 가 빠 릅 니 다.
view
Django 매 칭 정규 표현 식 이 성공 하면 해당 하 는 보기 함 수 를 찾 을 수 있 습 니 다. Django 는 항상 HttpRequest 대상 을 첫 번 째 매개 변수 로 보기 함수 에 전달 합 니 다. 또한 regex 매개 변수 에 지 니 고 있 는 매개 변 수 를 선택 가능 한 매개 변수 로 보기 함수 에 전달 합 니 다.
예:
url(r’^(?P<article_id>d+)/$’, views.detail, name=’detail’),
괄호
(?P<article_id>d+)
안의 매개 변 수 는 두 번 째 매개 변수 로 보기 함수 에 전 달 됩 니 다.
detail(request, article_id)
이 매개 변수의 이름 은 반드시 똑 같 아야 한다.url 함수 에 이 인자 의 이름 을 지 정 했 기 때문에 물론 표시 하지 않 아 도 됩 니 다.
예:
url(r’^(d+)/$’, views.detail, name=’detail’)
이렇게 보기 함수 에서 두 번 째 매개 변수의 이름 은 마음대로 명명 되 었 다.그것 은 위치 매개 변수의 위치 에 따라 일치 합 니 다.
name
name 을 말 하기 전에 Django template 의 내장 태그 url, {% url path. to. some view%} 은 보기 함수 에 대응 하 는 URL (상대 도 메 인 이름 의 절대 경로) 을 되 돌려 줄 수 있 습 니 다. 예 를 들 어 url (r ^ / acount / $), views. index, name = index) 을 사용 하여 {% url view. index%} 을 사용 하면 모드 의 유연성 을 높 일 수 있 습 니 다. 하 드 인 코딩 방식 을 사용 하면모델 은 유지 하기 어렵다.
탭 url 을 사용 할 때 다음 과 같은 문제 가 발생 할 수 있 습 니 다.
urlpatterns = patterns('',
url(r'^archive/(d{4})/$', archive, name="full-archive"),
url(r'^archive-summary/(d{4})/$', archive, {'summary': True}, "arch-summary"),
)
같은 보기 함수 에 여러 개의 urlconf 가 있 습 니 다. 이 때 모드 시스템 이 보기 이름 archive 를 통 해 URL 을 가 져 오 려 고 할 때 어찌 할 바 를 모 릅 니 다. name 매개 변 수 는 이 문 제 를 해결 하 는 데 사 용 됩 니 다.name 은 하나의 보기에 서 여러 개의 urlconf 에 대응 하 는 장면 을 사용 합 니 다.name 을 통 해 URL 을 거꾸로 가 져 옵 니 다.
예:
urlpatterns = patterns('',
url(r'^archive/(d{4})/$', archive, name="full-archive"),
url(r'^archive-summary/(d{4})/$', archive, {'summary': True}, "arch-summary"),
)
모듈 에서 사용 가능:
{% url arch-summary 1945 %}
{% url full-archive 2007 %}
kwargs
kwargs 는 사전 형식의 매개 변수 입 니 다. 사용 방식 은 다음 과 같 습 니 다.
url(r'^archive-summary/(d{4})/$', archive, {'summary': True}, "arch-summary"),
여기 kwargs 가 바로...
{'summary': True}
보기 함수 에서 이렇게 사용 합 니 다:
def archive(request, archive_id, summary):
주의:
하면, 만약, 만약...
url(r’^comment/(d{1,9})/delete/$’,'delete_comment’)
의 설정, delete 가 존재 하지 않 는 다 면comment 함수 보기
{% url path.to.some_view %}
이 탭 은 ViewDoes NotExit 오 류 를 던 집 니 다.자세히 생각해 보면 보기 가 존재 하지 않 는 다 면 URL 과 일치 하 더 라 도 이 URL 에 접근 할 때 ViewDoes NotExit 의 이상 을 버 리 는 것 이 일리 가 있 습 니 다. 여기 서 Django 는 분석 URLConf 를 불 러 올 때 만 검 사 를 했 습 니 다.
루트 url. py 파일 에서 사용 하면
url(r’^people/’, include(‘people.urls’, namespace=’people’))
여기 people 은 app 입 니 다. 그러면 people 이라는 app 의 url. py 에서
url(r’^(d{1,9})/$’,'index’, name=’index’)
name = index 를 지정 해 야 정상적으로 사용 할 수 있 습 니 다.
{% url ‘people:index’%}
그렇지 않 으 면:
NoReverseMatch at /
Reverse for 'subjects' with arguments '()' and keyword arguments '{}' not found
물론 상술 한 문제 가 던 진 이 이상 이 아니 라 는 것 이 확실 하 다 면 이 두 가지 답 을 볼 수 있다.
http://stackoverflow.com/questions/9649587/reverse-for-with-arguments-and-keyword-arguments-not-found
http://stackoverflow.com/questions/14882491/django-release-1-5-url-requires-a-non-empty-first-argument-the-syntax-change
본문 참고
https://docs.djangoproject.com/en/1.1/topics/http/urls/#id2
https://docs.djangoproject.com/en/1.1/ref/templates/builtins/#std:templatetag-url
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.