django请求生命周期流程图和路由层

系列文章目录

初识Django
Django ORM表的创建和增删改查


文章目录

  • 系列文章目录
    • django请求生命周期流程图
    • 路由匹配
      • 默认首页路由匹配
      • 错误页面匹配
      • 其他匹配
    • 无名分组
    • 有名分组
    • 有名分组和无名分组是否可以混用
    • 反向解析
    • 无名有名反向解析
    • 路由分发
    • 名称空间
      • 伪静态
      • 虚拟环境

django请求生命周期流程图

django请求生命周期流程图和路由层_第1张图片

路由匹配

​ URL:正则表达式,函数或者类型地址

路由匹配原则:从上往下正则表达式能够匹配到内容就算匹配成功,会立即执行后面的视图函数,并结束整个路由匹配过程

在Django框架中,如歌路由匹配第一次没有匹配到,就会在路径后面加上斜线再次匹配。

APPEND_SLASH = True 
#参数可以控制,简易使用默认的自动添加

默认首页路由匹配

url(r'^$',views.home)

错误页面匹配

url(r'',views.error)

其他匹配

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

无名分组

url(r'^rest/([0-9]{4})/',views.test) #test(request,1234)
"""
在路由匹配如果将某个正在使用的阔号扩起来,那么该部分正则配置到的内容会当做位置参数传递给后面的视图函数
"""

有名分组

url(r'^testadd/(?P[0-9]{4})',viewa,testadd) #testadd(request,year=1234)
"""在路由匹配中如果将某部分正则使用括号括起来,那么该部分正则匹配到的内容会当作关键字参数传递给后面的视图函数
"""

有名分组和无名分组是否可以混用

#不能混用
url(r'^index/(\d+)/(?P\d+)/',views.index)

#但是在单个情况下,可以重复使用
#无名分组
	url(r'^index/(\d+)/(\d+)/(\d+)/',views.index)  #/1/2/3
#有名分组
    url(r'^index/(?P\d+)/(?P\d+)/',views.index)

反向解析

1.在路由层书写正则已函数名的时候,在后面加上一个唯一标识
	url(r'^login/',views.login,name='my_login')
    
2.前端解析反向解析
	from django.shortcuts import reverse
    _url = reverse('my_login')
    
"""
通过标记解析出一个结果,该结果可以访问到所在的哪一行地址
"""

无名有名反向解析

#无名分组的反向解析
url(r'^login/(\d+)/',views.login,name='my_login')

后端
_url = reverse('my_login',args=(111,))
print(_url) # login/111

前端
{% url 'my_login' 1 %}
#有名分组反向解析
url(r'^login1/(?P\d+)/',views.login1,name='my_login1')
 后端
    	_url = reverse('my_login',kwargs={'xxx':123})
    	print(_url)  # /login/123/
    前端
    	{% url 'my_login' xxx=1 %}
        
"""其实无名有名反向解析可以使用通用的方式"""
	都可以使用无名分组的反向解析

路由分发

url(r'^app01/',include('app01.urls')),
url(r'^app02/',include('app02.urls')),

名称空间

​ 多个app中出现相同姓名,那么反向解析无法自动识别

总路由
#名称空间,namespace
    url(r'^app01/',include('app01.urls',namespace='app01')),
    url(r'^app02/',include('app02.urls',namespace='app02')),
反向解析
	reverse('app01:my_index')
	reverse('app02:my_index')
前端
    {% url 'app01:my_index' %}
    {% url 'app02:my_index' %}


伪静态

静态页面
	数据写死的 不怎么改变的
伪静态页面
	看似是文件其实是动态网页 这么做事为了提高网站被搜索引擎收录的概率
将路径后缀改为.html形式即可

虚拟环境

虚拟环境能够实现针对不同的项目配备专属的编程环境
创建虚拟环境相当于重新下载了一个新的解释器


虚拟环境的唯一表示是venv文件夹

你可能感兴趣的:(Django,django,python,后端)