目录
一、路由层
二、无名分组
三、有名分组
四、反向分析
1. 无名分组反向解析
2. 有名分组反向分析
五、路由分发
六、名称空间(了解)
七、伪静态的概念(了解)
八、虚拟环境(了解)
九、Django1和Django2的区别
1. 路由文件
2. 创建表关系
url(r'^test/$', views.test),
url(r'testadd', views.testadd),
# 首页的地址
url(r'^$', views.home),
path('admin/', admin.site.urls), # 精准匹配,不支持正则表达式
path('test/', views.test), # 精准匹配,不支持正则表达式
re_path(r'^test/$', views.test) # url(r'^test/$', views.test),
注:url方法的第一个参数支持的是正则表达式。
无名分组就是把正则中小括号里的匹配到的内容以位置参数的形式传递给视图函数。
url(r'^test/(\d+)$', views.test),
补充:
get请求的第一种方式:
http://127.0.0.1:8000/test/?a=1&b=2
get请求的第二种方式:
http://127.0.0.1:8000/test/123/11
有名分组就是把正则中小括号里的匹配到的内容以关键字参数的形式传递给视图函数。
url(r'^test/(?P\d+)/(?P\d+)$', views.test),
注:有名和无名是否能够混合使用
不要混合使用,要么无名,要么有名,但是,无名、有名可以使用多次。
url(r'^test/(?P\d+)/(\d+)$', views.test),
无名有名分组的使用可以有了接收参数的方法
反向分析就是每一个路由都可以起一个别名,通过Django提供的一些方法去解析这个别名,得到一个别名对应的路由。
url(r'^v1/v2/v3/home$', views.home, name='home'),
'''反向解析'''
res=reverse('home') # /v1/v2/v3/home
print(res)
点我看美女
url(r'^v1/v2/v3/home/(\d+)/(\d+)/$', views.home, name='home')
res=reverse('home', args=(123, 11)) # /v1/v2/v3/home/1
print(res)
点我看美女
url(r'^v1/v2/v3/home/(?P\d+)/(?P\d+)/$', views.home, name='home')
res=reverse('home', args=(123, 11)) # /v1/v2/v3/home/1
res=reverse('home', kwargs={'year':123, 'mon':1}) # /v1/v2/v3/home/1
print(res)
点我看美女
Django的全局路由文件是urls.py这个文件
随着项目的复杂程度越来越来越大,路由肯定也是越来越多,路由文件就会增加很多的路由地址,就会导致路由文件很混乱,不好管理,也不够清晰,我们可以把总路由文件进行拆分,拆分到各个应用下面去,每一个应用都可以有自己的路由文件。
路由分发之后,总路由文件就不在作为地址匹配了,只是为了分发而已。
路由的分发
方式一:
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')),
res=reverse('app01:login', args=(11,22)) # /v1/v2/v3/home/1
res=reverse('app02:login', args=(11,22)) # /v1/v2/v3/home/1
伪静态:其实就是把动态页面改成静态页面
动态页面:它不是在html页面中写死的,它是根据后端的数据变化而变化
静态页面:
案例:https://www.cnblogs.com/bigsai/p/17827160.html -------》这个就是伪装之后的页面
伪装的目的:为了更好的被各大搜索引擎抓大,静态页面是最容易被抓到的,有个别的网站就会做伪装,seo
怎么样去伪装
url(r'^v1/v2/test.html/$', views.test)
以后针对于每一个独立的项目,都会去配置一个解释器,多个项目能不能使用同一个解释器,原则上是能的,我们会针对于不同的项目单独的配置一个新的解释器。
每一个解释器只装针对于这个项目的模块
我们会使用虚拟环境:类似于是一个纯净版本的Python解释器,虚拟环境你是需要自己下载的,下载的时候,使用的是哪个Python解释器版本,下载下来的就是这个版本的解释器,纯净版的。
注:不要频繁的创建虚拟环境,过多的虚拟环境肯定会占用资源。
Django默认支持以下5个转化器:
注册自定义转化器
对于一些复杂或者复用的需要,可以定义自己的转化器。转化器是一个类或接口,它的要求有三点: