内容概要

  • 路由匹配

  • 无名有名分组

  • 反向解析

  • 无名有名分组反向解析(难理解)

  • 路由分发

  • 名称空间

  • 伪静态

内容详细

1 路由匹配

urls.py

url()方法第一个参数其实是一个正则表达式
第一个参数只要能够匹配到内容就算是符合匹配条件直接停止匹配执行视图函数 # 路由匹配
url(r'^test/$',views.test),
url(r'^testadd/$',views.testadd) # 取消自动加斜杠(默认为True)
APPEND_SLASH = False

2 无名分组

在路由匹配的时候如果给正则表达式加上了括号
那么匹配到路由之后会将括号内正则表达式匹配的到内容当做位置参数传递给视图函数
url(r'^test/(\d+)/(\d+)/',views.test) # test(request,正则匹配的内容)

3 有名分组

在路由匹配的时候如果给正则表达式加上了括号并且命名
那么匹配到路由之后会将括号内正则表达式匹配的到内容当做关键字参数传递给视图函数
url(r'^testadd/(?P<user_id>\d+)/',views.testadd) # testadd(request,user_id=正则匹配的内容)

两者结合使用?

url(r'^testsub/(\d+)/(?P<sub_id>\d+)/',views.sub)
无名有名分组两者不能混合使用!!!

单独的情况下可以重复多次!!!
url(r'^testsub/(\d+)/(\d+)/')
url(r'^testsub/(?P<sub_id>\d+)/(?P<sub_id>\d+)/')

4 反向解析

"""
通过别名反向解析到一个结果
该结果可以访问到对应的视图函数
"""
前端页面反向解析
{% url 'index_view' %}
后端流程反向解析
from django.shortcuts import render, HttpResponse, redirect, reverse
def func(request):
# 第一种
_url = reverse('index_view')
print(_url)
# return redirect('/index/')
# 第二种
return redirect('index_view') # 还可以直接写别名 # 起别名不能冲突

5 无名有名反向解析

url(r'^login/(\d+)/',views.login,name='login_view')
reverse('login_view',args=(1,))
{% url 'login_view' 1 %}
# 数字只要能够让\d+匹配到就可以 在实际项目中一般都是动态获取


url(r'^reg/(?P<user_id>\d+)/',views.reg,name='reg_view')
reverse('reg_view',kwargs={'user_id':666})
{% url 'reg_view' user_id=123 %}

"""无论是无名分组还是有名分组的反向解析都可以使用一样的格式"""
url(r'^reg/(?P<user_id>\d+)/',views.reg,name='reg_view')
reverse('reg_view',args=(123,))
{% url 'reg_view' 123 %}

6 路由分发

当django的app特别多的时候 一个urls.py太过冗余
在django中每一个app都可以拥有自己的urls.py static文件夹 templates文件夹

路由分发
总路由不再做url与视图函数直接匹配
而是先根据url分辨出请求哪个业务
之后分配给下面的app再去匹配视图函数 复杂版本
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')),

# 子路由还是按照之前总路由的写法

7 名称空间

多个应用在反向解析的时候出现了别名冲突的情况
django是无法做到一一对应的 >>>名称空间

url(r'^app01/',include('app01.urls',namespace='app01')),
url(r'^app02/',include('app02.urls',namespace='app02')),
reverse('app01:index_view')
reverse('app02:index_view')
{% url 'app01:index_view' %}
{% url 'app02:index_view' %}

# 名称空间其实也可以不需要使用
只需要确保多个应用之间别名也不冲突的情况
eg:起别名的时候加上应用名前缀

8 伪静态页面

静态页面
页面上的数据一般都是直接写死的
伪静态页面
目的是为了提升网页被SEO查询出来的概率 如何优化都干不过RMB玩家
"""所有的搜索引擎都是爬虫程序"""

Django基础之路由层的更多相关文章

  1. Django基础之路由(urls)层

    目录 Django基础之路由(urls)层 无名分组与有名分组 无名分组 有名分组 反向解析 前段解析 后端解析 无名分组反向解析 前段解析 后端解析 有名分组的反向解析 前段解析 后端解析 路由分发 ...

  2. Django day05 虚拟环境 django 2.0和django 1.0 路由层区别

    一:虚拟环境 创建虚拟环境一般有三种方式: 1)   File--->New Project--> 出现如下图,点击Project Interpreter:New Virtualenv e ...

  3. Django的日常-路由层

    目录 Django的日常-2 路由层 有名分组和无名分组 反向解析 路由的分发 Django的日常-2 路由层 我们之前已经接触过路由层,只是我们可能不知道他叫这个名字,实际上在Django里面路由层 ...

  4. [Django框架之路由层匹配、有名 无名分组、反向解析、路由分发、名称空间、伪静态、本地虚拟环境、django版本区别]

    [Django框架之路由层匹配.有名 无名分组.反向解析.路由分发.名称空间.伪静态.本地虚拟环境.django版本区别] 路由层 路由即请求地址与视图函数的映射关系,如果把网站比喻成一本书,那路由就 ...

  5. day05 django框架之路由层

    day05 django框架之路由层 今日内容概要 简易版django请求声明周期流程图(重要) 路由匹配 无名有名分组 反向解析 无名有名解析 路由分发 名称空间 伪静态 虚拟环境 简易版djang ...

  6. Django 学习 之路由层(URL)

    路由层(URL) 1.路由层简单配置 (1)path方法 写固定的url. (2)re_path方法 可以正则规则 例: urlpatterns = [ path('admin/', admin.si ...

  7. Django学习之路由层

    Django请求生命周期 - wsgi, 他就是socket服务端,用于接收用户请求并将请求进行初次封装,然后将请求交给web框架(Flask.Django) - 中间件,帮助我们对请求进行校验或在请 ...

  8. Django( 学习第三部 Django的url路由层)

    目录 url路由层 路由匹配(有名分组与无名分组) 反向解析 路由分发 名称空间(了解) Django版本区别 url 路由匹配 注意事项: url方法,第一个参数是正则表达式,只要第一个参数能够匹配 ...

  9. Django基础(路由、视图、模板)

    目录导航 Django 路由控制 Django 视图层 Django 模版层 Django 路由控制 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用 ...

随机推荐

  1. vue-axios的总结及项目中的常见封装方法。

    前言 我们知道 vue 2.0版本开始推荐使用 axios 来完成前端 ajax 请求,axios 是一个基于Promise 的 http 库,可以用在浏览器和 node.js 中,axios 成为v ...

  2. @ResponseBody、@RequestBody

    @ResponseBody 我们在刚刚接触Springboot的第一个hello工程的时候,我们就接触了一个RestController,而通过进入它的源码,我们会发现@ResponseBody @R ...

  3. java之Map的使用

    Map的实现类有很多,其中较为常见的有HashMap,HashTable,LinkedHashMap,TreeMap,下面分别对这几个类进行简单的分析: 1.HashMap HashMap的结构数组+ ...

  4. Windows进程间通讯(IPC)----内存映射文件

    内存映射文件原理 内存映射文件是通过在虚拟地址空间中预留一块区域,然后通过从磁盘中已存在的文件为其调度物理存储器,访问此虚拟内存空间就相当于访问此磁盘文件了. 内存映射文件实现过程 HANDLE hF ...

  5. JavaScrip条件表达式优化

    目录 1,前言 2,多条件if语句优化 3,参数默认值 4,Switch语句优化 1,前言 今早看了一篇文章<JavaScrip实现:如何写出漂亮的条件表达式>,原创于:华为云开发者社区, ...

  6. 2020.12.14vj补题

    A. Lucky Ticket 题意:就是说4与7是幸运数字,用4和7组成的数字也是幸运数字,问所给数字是不是幸运数字 思路:直接敲 代码: 1 #include<iostream> 2 ...

  7. PSP初体验:求交点

    项目 内容 课程:北航2020春软件工程 博客园班级博客 作业:完成一个平面图形求交点的程序,体验PSP的过程 个人项目作业 我在这个课程的目标是 体验软件开发的全流程 这个作业在哪个具体方面帮助我实 ...

  8. 啥?SynchronousQueue和钟点房一个道理

    今天这篇文章,我们继续讲架构师大刘的故事. 大刘有段时间经常会给一些程序员讲课.这一方面是由于团队培训的需要,一方面也是大刘自身想搞搞凡尔赛,嘚瑟一下自身的实力. 大刘讲课是允许公司任何一个人进去听的 ...

  9. 【转载】linux 设备管理器 图形hardinfo 字符 lshw lspci

    在ubuntu中怎样启动类似windows中的 设备管理器 sudo apt-get install hardinfo lspci sudo lshw everestubuntu下的"设备管 ...

  10. Zabbix 监控系统部署

    Zabbix 监控系统部署 实验环境 Zabbix server:RHEL8 ip:192.168.121.10 一.关闭防火墙和selinux [root@Zabbix-server ~]# sys ...