xone

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

一、路由系统,URL

    1、url(r'^index/', views.index),    
       url(r'^home/', views.Home.as_view()),
    2、url(r'^detail-(\d+).html', views.detail),  
    3、url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)
       
       PS:
            def detail(request, *args,**kwargs):
                pass
    
       实战:
            a. 
                url(r'^detail-(\d+)-(\d+).html', views.detail),
                
                def detail(request, nid, uid):
                    
                    pass
            
                def detail(request, *args):
                    args = (2,9)
                    
                    
                def detail(request, *args, **kwargs):
                    args = (2,9)
       
            b. 
                url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)
                
                def detail(request, nid, uid):
                    pass
                    
                def detail(request, **kwargs):
                    kwargs = {'nid': 1, 'uid': 3}
                    
                def detail(request, *args, **kwargs):
                    args = (1,3)
    4、 name
        
        对URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL *****
        urls.py
        url(r'^asdfasdfasdf/', views.index, name='i1'),        # 方式一
        url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),     # 方式二
        url(r'^buy/(?P<pid>\d+)/(?P<nid>\d+)/', views.index, name='i3'),   # 方式三.
        
        
        视图函数
        def func(request, *args, **kwargs):
            from django.urls import reverse
            
            url1 = reverse('i1')                              # asdfasdfasdf/
            url2 = reverse('i2', args=(1,2,))                 # yug/1/2/
            url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/
        
        前端显示
        xxx.html
            
            {% url "i1" %}               # asdfasdfasdf/
            {% url "i2" 1 2 %}           # yug/1/2/ (可以自定义跳转到其它页面)
            {% url "i3" pid=1 nid=9 %}   # buy/1/9/

            {{ request.path_info }}      # 跳转到当前页面
5、多级路由
目录结构 - django_test
- app01
- urls.py
- app02
- urls.py
- djando_test
- urls.py
django_test
/urls.py from django.conf.urls import url,include from django.contrib import admin urlpatterns = [ url(r'^cmdb/', include("app01.urls")), url(r'^monitor/', include("app02.urls")), ] app01/urls.py from django.conf.urls import url,include from django.contrib import admin from app01 import views urlpatterns = [ url(r'^login/', views.login), ] app02/urls.py from django.conf.urls import url,include from django.contrib import admin from app02 import views urlpatterns = [ url(r'^login/', views.login), ]

 

6、默认值

            url(r'^index/', views.index, {'name': 'root'}),
        
            def index(request,name):
                print(name)
                return HttpResponse('OK')

 

7、命名空间 

a. project.urls.py

from django.conf.urls import url,include
 
urlpatterns = [
    url(r'^a/', include('app01.urls', namespace='author-polls')),
    url(r'^b/', include('app01.urls', namespace='publisher-polls')),
]

b. app01.urls.py

from django.conf.urls import url
from app01 import views
 
app_name = 'app01'
urlpatterns = [
    url(r'^(?P<pk>\d+)/$', views.detail, name='detail')
]

 

c. app01.views.py

def detail(request, pk):
    v = reverse('author-polls:detail', kwargs={'pk':11})
    return HttpResponse('OK')

 

d.xxx.html

{% url 'author-polls:detail' pk=12 %}

 

posted on 2017-04-13 17:23  周小百  阅读(289)  评论(0)    收藏  举报