Django路由层


路由层

路由层

1. 路由匹配, urls.py中

# APPEND_SLASH = False 控制django是否自动加斜杠匹配

url(r'^testadd/$', views.testadd)

# 匹配规则:从上到下只要正则表达式匹配成功,就不会往下匹配了

'''
	get请求的传参方式?
		http://127.0.0.1:8000/test/?a=1
		http://127.0.0.1:8000/test/1
'''

无名分组和有名分组

# 无名分组
url(r'^test/(\d+)', views.test),
# 会把括号中匹配的数字当成位置参数传给视图函数

# 有名分组
url(r'^test/(?P<aaaa>\d{2})$', views.test), # # 会把括号中匹配的数字当成关键字参数传给视图函数

反向解析

# 反向解析其实就是通过一个路由的别名,可以得到该别名所在的这行路由的完整地址

# 路由是可以起别名的
# 反向解析
url(r'^v1/v2/v3/v4/v5/test/', views.test, name='test'),

from django.shortcuts import reverse
# 1. 后端反向解析
print(reverse('test')) # /test/

# 带参数的反向解析
# 1. 后端反向解析
print(reverse('test', args=(11111, ))) # /test/
print(reverse('test', kwargs={'aaa': 1111})) # /test/

'''无名有名不能混合使用,可以单个多次使用'''
# url(r'^test/(\d+)/(\d+)/(\d+)/(\d+)', views.test, name='test'),
    url(r'^test/(?P<aaa>\d+)/(?P<bbb>\d+)/(?P<ccc>\d+)/(\d+)', views.test, name='test'),

路由分发

# 重点
以后我们的django项目会越来越大,那么就会导致总路由文件会越来越大,就会非常难维护,我们会把总路由分开到不同的应用下面

'''
	django的每一个应用都支持有自己的
		urls.py
		templates
		static
'''

# 怎么样把这些应用串起来?就是使用路由分发。
# 使用路由分发一般都是多个应用

 # 路由分发
    '''第一种方式'''
    from app01 import urls as app01_urls
	from app02 import urls as app02_urls
    url(r'^app01/', include(app01_urls)),
    url(r'^app02/', include(app02_urls)),
 '''
 	强调:路由分发时,总路由第一个参数一定不能加$
 '''
	
    # 第二种方式
	url(r'^app01/', include('app01.urls')),
    url(r'^app02/', include('app02.urls')),

名称空间

# 当多个应用出现相同的别名时,反向解析就没办法识别了
  url(r'^app01/', include('app01.urls', namespace='app01')),
  url(r'^app02/', include('app02.urls', namespace='app02')),
 
 print(reverse('app01:index'))
 print(reverse('app02:index'))

虚拟环境

# 针对不同的项目,创建出来一个新的python环境,类似于是一个新的python解释器

文章作者: 祈安
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 祈安 !
评论
  目录