django学习笔记之URL路由

一、单一路由对应,最简单的:

url('login/',views.login),

二、基于正则的路由,一个视图函数可以匹配一类url:

url(r'^detail-(\d+).html', views.detail),  

以上的就可以匹配detail-数字的url

如果有多个需要匹配的参数,而且参数的位置不按顺序传递,可以这样写:

url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)

在对应的视图函数中,除了request参数外,还接收nid和uid两个参数

a. 
				url(r'^detail-(\d+)-(\d+).html', views.detail),
				
				def func(request, nid, uid):
					
					pass
			
				def func(request, *args):
					args = (2,9)
					
					
				def func(request, *args, **kwargs):
					args = (2,9)
	   
			b. 
				url(r'^detail-(?P<nid>\d+)-(?P<uid>\d+).html', views.detail)
				
				def func(request, nid, uid):
					pass
					
				def funct(request, **kwargs):
					kwargs = {'nid': 1, 'uid': 3}
					
				def func(request, *args, **kwargs):
					args = (2,9)

四、name

name是对url路由关系的命名,可以根据名称生成自己想要的url

对URL路由关系进行命名, ***** 以后可以根据此名称生成自己想要的URL *****
		
		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/
		
		注:
			# 当前的URL
			request.path_info 

 

五、多级路由

project/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),
			]

  

 

posted @ 2018-05-29 20:58  水如如  阅读(129)  评论(0编辑  收藏  举报