一、路由系统,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 %}

浙公网安备 33010602011771号