django URLconf 학습

26002 단어 djangourls
django 1.4.5 documentation
The view layer -->The basics 1, patterns 구문 형식:
   
   
   
   
  1. patterns = pattern('prefix',     //prefix  
  2.     url() 

url 문법 형식:
   
   
   
   
  1. patterns = pattern('prefix'
  2.     url(regular expression, view function [, optional dictionary[, name]]) 

optional dictionary 는 사전 형식 매개 변수 optional name 은named url pattern 2 이고 문법 예:
   
   
   
   
  1. urlpatterns = pattern(''
  2.     (r'^articles/2003/$''news.views.special_case_2003'), 
  3.     (r'^articles/(\d{4})/$''news.views.year_archive'), 
  4.     (r'^articles/(\d{4})/(\d{2})/$''news.views.month_archive'), 
  5.     (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:
   
   
   
   
  1. from django.conf.urls import patterns, url, include 
  2.  
  3. urlpatterns = urlpattern(''
  4.     (r'^articles/2003/$''news.views.special_case_2003'), 
  5.     (r'^articles/(?P\d{4})/$''news.views.year_archive'), 
  6.     (r'^articles/(?P\d{4})/(?P\d{2})/$''news.views.month_archive'), 
  7.     (r'^articles/(?P\d{4})/(?P\d{2})/(?P\d{2})/$''news.views.article_detail'), 
  8. )  

1,django는 news를 호출합니다.views.month_archive(request, year='2005', month='03')로 URL 요청을 처리합니다./articles/2005/03/이런 형식은 위치에 따라 전달하는 것보다 읽을 수 있고 오류가 발생하기 쉽습니다. 4.urlpattern이 URL 요청에 일치할 때 포획된 매개 변수는python 문자열의 형식으로view 보기 함수에 전달됩니다. 매개 변수가 어떤 형식으로 포획되었든지 간에:
   
   
   
   
  1. (r'^articles/(?P\d{4})/$''news.views.year_archive'),  

urlpattern이 일치할 때\d{4}는 숫자만 일치하지만, 포획된 연도의 숫자를view 보기 함수에 전달할 때 문자열로 전달됩니다.
 
 
5. 뷰 함수에 대한 기본 매개변수를 지정합니다.
 
   
   
   
   
  1. #URLconf 
  2. urlpatterns = pattern('', 
  3.     (r'^blog/$', 'blog.views.page'), 
  4.     (r'^blog/page(?P<num>\d+)/$', 'blog.views.page'), 
  5.  
  6. # View (in blog/views.py) 
  7. def page(request, num="1"): 
  8.     #Output the appropriate page of blog entries, according to num. 

상술한 예시에서 모든 요청은 블로그를 사용합니다.views.페이지 보기 함수로 URL 요청을 처리합니다.그러나 URL 요청이/blog/만 포함될 때(특수한 경우) 첫 번째 기록이 일치하고 보기 함수 페이지가 이 요청을 처리할 때 기본 매개 변수num의 값 1을 자동으로 사용하며 구체적인 형식은 함수체에 의해 정의됩니다.6.urlpattern 쓰기 간소화: 1. Theview prefix:
   
   
   
   
  1. urlpatterns = patterns('news.views',     // news.views ,  
  2.     (r'^articles/(\d{4})/$''year_archive'), 
  3.     (r'^articles/(\d{4})/(\d{2})/$''month_archive'), 
  4.     (r'^articles/(\d{4})/(\d{2})/(\d+)/$''article_detail'), 

  2、Including other URLconfs:
   
   
   
   
  1. urlpatterns = patterns('', 
  2.     # ... snip ... 
  3.     (r'^comments/', include('django.contrib.comments.urls')), 
  4.     (r'^community/', include('django_website.aggregator.urls')), 
  5.     (r'^contact/', include('django_website.contact.urls')), 
  6.     (r'^r/', include('django.conf.urls.shortcut')), 
  7.     # ... snip ... 

include를 사용할 때 정규 표현식은 $를 사용할 수 없습니다.django가 실행할 때include는 include의 URL을 뒤에 추가하는 다른 형식이기 때문입니다.
   
   
   
   
  1. from django.conf.urls import patterns, url, include 
  2. extra_patterns = patterns(''
  3.     url(r'^reports/(?P\d+)/$''credit.views.report', name='credit-reports'), 
  4.     url(r'^charge/$''credit.views.charge', name='credit-charge'), 
  5.   
  6. urlpatterns = patterns(''
  7.     url(r'^$''apps.main.views.homepage', name='site-homepage'), 
  8.     (r'^help/', include('apps.help.urls')), 
  9.     (r'^credit/', include(extra_patterns)), 

7. 보기 함수에 추가 매개 변수를 전달한다.
   
   
   
   
  1. urlpatterns = patterns('blog.views'
  2.     (r'^blog/(?P\d{4})/$''year_archive', {'foo''bar'}), 

1. 추가 매개 변수는 사전 형식 2. 사전 매개 변수의 키와 이름 그룹의 이름이 겹치면 매개 변수가view 보기 함수에 전달될 때 사전 매개 변수는urlpattern이 포획한 매개 변수를 덮어씁니다.예:
   
   
   
   
  1. urlpatterns = patterns('blog.views'
  2.     (r'^blog/(?P\d{4})/$''year_archive', {'year''000'}), 

view 보기 함수는 URL 요청/blog/2013/를 처리하는데 사용하는 파라미터는 2013이 아니라 000입니다. urlpattern이 포획한 파라미터가 2013임에도 불구하고. 
8. 추가 매개 변수를 include에 전달하기():
   
   
   
   
  1. # main.py 
  2. urlpatterns = patterns(''
  3.     (r'^blog/', include('inner'), {'blogid'3}), 
  4.  
  5. # inner.py 
  6. urlpatterns = patterns(''
  7.     (r'^archive/$''mysite.views.archive'), 
  8.     (r'^about/$''mysite.views.about'), 

다음과 같습니다.
   
   
   
   
  1. # main.py 
  2. urlpatterns = patterns(''
  3.     (r'^blog/', include('inner')), 
  4.  
  5. # inner.py 
  6. urlpatterns = patterns(''
  7.     (r'^archive/$''mysite.views.archive', {'blogid'3}), 
  8.     (r'^about/$''mysite.views.about', {'blogid'3}), 

1. 추가 매개 변수는 사전 형식 2. include ()에 전달되는 추가 매개 변수로 include의 모든 기록에 전달됩니다. 이 기록을 처리하는 보기 함수가 해당하는 매개 변수 9, Naming URL patterns를 정확하게 받아들일 수 있든 없든 상관없습니다.
   
   
   
   
  1. urlpatterns = patterns(''
  2.     url(r'^archive/(\d{4})/$', archive, name="full-archive"), 
  3.     url(r'^archive-summary/(\d{4})/$', archive, {'summary'True}, "arch-summary"), 

사용: {% URLarch-summary 1945%} {% URL full-archive 2007%} 여러 개의 기록이 같은 보기 함수로 처리될 때named URL을 사용하여 다른 기록을 구분합니다

좋은 웹페이지 즐겨찾기