django URLconf 학습
The view layer -->The basics 1, patterns 구문 형식:
-
patterns = pattern('prefix', //prefix
-
url()
-
)
url 문법 형식:
-
patterns = pattern('prefix',
-
url(regular expression, view function [, optional dictionary[, name]])
-
)
optional dictionary 는 사전 형식 매개 변수 optional name 은named url pattern 2 이고 문법 예:
-
urlpatterns = pattern('',
-
(r'^articles/2003/$', 'news.views.special_case_2003'),
-
(r'^articles/(\d{4})/$', 'news.views.year_archive'),
-
(r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
-
(r'^articles/(\d{4)/(\d{2})/(\d+)/$', 'news.views.article_detail'),
-
)
1. 괄호 안의 매개 변수는view 보기 함수에 전달될 때 위치에 따라 전달된다. 2. url 요청/articles/2005/03/는 제3조 기록에 일치하고 Django는 news를 호출한다.views.month_archive(request,'2005','03') 함수로 URL 요청 3, 첫 번째와 두 번째 기록은 모두 URL 요청/articles/2003/와 일치하지만,django는 첫 번째 기록을 사용하여 일치합니다.urlpattern은 순서대로 일치하기 때문에 일치하기만 하면 다음 기록을 무시합니다.이런 형식은 좋지 않습니다. 다음에views 보기 함수에서 기본 인자를 사용하여 이런 특수한 상황을 처리할 것입니다. 셋째, 이름 그룹: 이름 그룹 문법 형식: (? Ppattern) 에서name는 그룹의 이름이고,pattern은 일치하는 정규 표현식urls입니다.py:
-
from django.conf.urls import patterns, url, include
-
-
urlpatterns = urlpattern('',
-
(r'^articles/2003/$', 'news.views.special_case_2003'),
-
(r'^articles/(?P
\d{4})/$' , 'news.views.year_archive'),
-
(r'^articles/(?P
\d{4})/(?P\d{2})/$' , 'news.views.month_archive'),
-
(r'^articles/(?P
\d{4})/(?P\d{2})/(?P\d{2})/$' , 'news.views.article_detail'),
-
)
1,django는 news를 호출합니다.views.month_archive(request, year='2005', month='03')로 URL 요청을 처리합니다./articles/2005/03/이런 형식은 위치에 따라 전달하는 것보다 읽을 수 있고 오류가 발생하기 쉽습니다. 4.urlpattern이 URL 요청에 일치할 때 포획된 매개 변수는python 문자열의 형식으로view 보기 함수에 전달됩니다. 매개 변수가 어떤 형식으로 포획되었든지 간에:
-
(r'^articles/(?P
\d{4})/$' , 'news.views.year_archive'),
urlpattern이 일치할 때\d{4}는 숫자만 일치하지만, 포획된 연도의 숫자를view 보기 함수에 전달할 때 문자열로 전달됩니다.
5. 뷰 함수에 대한 기본 매개변수를 지정합니다.
-
#URLconf
-
urlpatterns = pattern('',
-
(r'^blog/$', 'blog.views.page'),
-
(r'^blog/page(?P<num>\d+)/$', 'blog.views.page'),
-
)
-
-
# View (in blog/views.py)
-
def page(request, num="1"):
-
#Output the appropriate page of blog entries, according to num.
상술한 예시에서 모든 요청은 블로그를 사용합니다.views.페이지 보기 함수로 URL 요청을 처리합니다.그러나 URL 요청이/blog/만 포함될 때(특수한 경우) 첫 번째 기록이 일치하고 보기 함수 페이지가 이 요청을 처리할 때 기본 매개 변수num의 값 1을 자동으로 사용하며 구체적인 형식은 함수체에 의해 정의됩니다.6.urlpattern 쓰기 간소화: 1. Theview prefix:
-
urlpatterns = patterns('news.views', // news.views ,
-
(r'^articles/(\d{4})/$', 'year_archive'),
-
(r'^articles/(\d{4})/(\d{2})/$', 'month_archive'),
-
(r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'article_detail'),
-
)
2、Including other URLconfs:
-
urlpatterns = patterns('',
-
# ... snip ...
-
(r'^comments/', include('django.contrib.comments.urls')),
-
(r'^community/', include('django_website.aggregator.urls')),
-
(r'^contact/', include('django_website.contact.urls')),
-
(r'^r/', include('django.conf.urls.shortcut')),
-
# ... snip ...
-
)
include를 사용할 때 정규 표현식은 $를 사용할 수 없습니다.django가 실행할 때include는 include의 URL을 뒤에 추가하는 다른 형식이기 때문입니다.
-
from django.conf.urls import patterns, url, include
-
extra_patterns = patterns('',
-
url(r'^reports/(?P
\d+)/$' , 'credit.views.report', name='credit-reports'),
-
url(r'^charge/$', 'credit.views.charge', name='credit-charge'),
-
)
-
-
urlpatterns = patterns('',
-
url(r'^$', 'apps.main.views.homepage', name='site-homepage'),
-
(r'^help/', include('apps.help.urls')),
-
(r'^credit/', include(extra_patterns)),
-
)
7. 보기 함수에 추가 매개 변수를 전달한다.
-
urlpatterns = patterns('blog.views',
-
(r'^blog/(?P
\d{4})/$' , 'year_archive', {'foo': 'bar'}),
-
)
1. 추가 매개 변수는 사전 형식 2. 사전 매개 변수의 키와 이름 그룹의 이름이 겹치면 매개 변수가view 보기 함수에 전달될 때 사전 매개 변수는urlpattern이 포획한 매개 변수를 덮어씁니다.예:
-
urlpatterns = patterns('blog.views',
-
(r'^blog/(?P
\d{4})/$' , 'year_archive', {'year': '000'}),
-
)
view 보기 함수는 URL 요청/blog/2013/를 처리하는데 사용하는 파라미터는 2013이 아니라 000입니다. urlpattern이 포획한 파라미터가 2013임에도 불구하고.
8. 추가 매개 변수를 include에 전달하기():
-
# main.py
-
urlpatterns = patterns('',
-
(r'^blog/', include('inner'), {'blogid': 3}),
-
)
-
-
# inner.py
-
urlpatterns = patterns('',
-
(r'^archive/$', 'mysite.views.archive'),
-
(r'^about/$', 'mysite.views.about'),
-
)
다음과 같습니다.
-
# main.py
-
urlpatterns = patterns('',
-
(r'^blog/', include('inner')),
-
)
-
-
# inner.py
-
urlpatterns = patterns('',
-
(r'^archive/$', 'mysite.views.archive', {'blogid': 3}),
-
(r'^about/$', 'mysite.views.about', {'blogid': 3}),
-
)
1. 추가 매개 변수는 사전 형식 2. include ()에 전달되는 추가 매개 변수로 include의 모든 기록에 전달됩니다. 이 기록을 처리하는 보기 함수가 해당하는 매개 변수 9, Naming URL patterns를 정확하게 받아들일 수 있든 없든 상관없습니다.
-
urlpatterns = patterns('',
-
url(r'^archive/(\d{4})/$', archive, name="full-archive"),
-
url(r'^archive-summary/(\d{4})/$', archive, {'summary': True}, "arch-summary"),
-
)
사용: {% URLarch-summary 1945%} {% URL full-archive 2007%} 여러 개의 기록이 같은 보기 함수로 처리될 때named URL을 사용하여 다른 기록을 구분합니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.