DJango 学习(8)—— django 请求生命周期流程图 以及 路由层介绍
django 请求生命周期流程图
"""
缓存数据库
提前已经将你要想的数据准备好 你来直接拿就行
提高效率和响应时间
"""
路由层
路由匹配
# 路由匹配
url(r"test", views.test)
url(r"testadd", views.testadd)
"""
url 方法第一个参数是正则表达式
只要第一个参数正则表单时能够匹配内容 那么就会立刻停止往下匹配
直接执行对应的视图函数
你在输入 url 的时候会默认加斜杠
django内部帮你做到重定向
一次匹配不行
url 后面加 斜杠 再来一次
"""
# 取消自动加斜杠
APPEND_SLASH = False
# 首页
url(r"^$", views.home)
演示
无名分组
"""
分组:就是给一段正则表达式用小括号括起来
"""
url(r"test/(\d+)/", views.test)
def test(request, xx)
print(xx)
return HttpResponse("test")
# 无名分组就是将括号内正则表达式匹配到的内容当作位置参数传递给后面的视图函数
有名分组
"""
可以给正则表单式起别名
"""
url(r"test/(?P<year>\d+)/", views.test)
def test(request, year)
print(year)
return HttpResponse("test")
# 有名分组就是将括号内正则表达式匹配到的内容当作关键字参数传递给后面的视图函数
无名分组和有名混用
# 不能混用
# 但是同一个分组可以使用 N 多次
无名、有名分组代码演示
反向解析
简单介绍
反向解析主要应用于:
模板(html 文件中)的超链接
视图(view.py)中的重定向
作用:
随着功能的增加会出现更多的视图,可能之前配置的正则表达式不够准确,于是就要修改正则表达式,但是正则表达式一旦修改了,之前所有对应的超链接都要修改,真是一件麻烦的事情,而且可能还会漏掉一些超链接忘记修改,有办法让链接根据正则表达式动态生成吗? 就是用反向解析的办法
简单来说,使用反向解析可以在 url.py
改变正则表达式时,但是实际运行时却不用输入最近的网址,而实现网址的跳转
# 通过一些方法得到一个结果,该结果可以直接访问对应的 url 触发视图函数
# 先给路由与视图函数起一个别名
url(r"^func_k/", views.func, name="xxx")
# 反向解析
# 后端反向解析
from django.shortcuts import reverse
reverse("xxx")
# 前端反向解析
<a href="{% url 'xxx' %}">111</a>
反向解析代码演示
视图中的重定向
模板(html 文件中)的超链接
无名有名反向解析
# 无名反向解析
url(r"index/(\d+)/", views.index)
# 前端
{
% url "xxx" 123 %}
# 后端
from django.shortcuts import reverse
reverse("xxx", args=(1,))
"""
这个数字写代码的时候应该放什么
数字一般情况下放的式数据的主键值 数据的编辑和删除
url(r"edit/(\d+)/", views.edit)
def edit(request, edit_id):
reverse("xxx", args=(edit_id, ))
{% for user_obj in user_queryset %}
<a href="{% url "xxx" user_obj %}">
{% endfor %}
"""
# 有名反向解析
url=(r"func/(?P<year>\d+)/", views.func, name="xxx")
# 前端
<a href="{% url 'xxx' year=123 %}">111</a>
<a href=