1. Django的路由解析: 是从上往下进行匹配的

url(r'index', views.index)
#这里的index 解析都可以被解析到的, abcindex index indexabc
url(r'^index', views.index)
#这里的index 解析是index indexabc
url(r'^index/$', views.index)
#这里的index 解析是精确解析 只有index 才可以被解析 例题:
url(r'index/', views.index),
url(r'^app1_index/', app1_views.index),
url(r'^app2_index/', app2_views.index),
这里的解析是先 解析 index 后面的app1_index app2_index 都不会被解析到的

匹配模式

2. url 的分组模式,分为无名分组 和 有名分组两大类

url(r'^delete/(\d+)/(\d+)$', views.delete)  #这里是无名分组
def delete(request, n1, n2) #可以在views 内设置 n1,n2 随便设置
请求路径: http://127.0.0.1/delete/1/2
n1 拿到的值为1 n2 拿到的值为2 url(r'^delete/(?P<id>\d+)/(?P<num>\d+)$', views.delete) #这里就是有名分组
def delete(request, id, pwd): #这里是在 一定要写id 和pwd 次序不能乱
请求路径:http://127.0.0.1/delete/1/2
id 拿到的值为 1 pwd 拿到的值为2

有名分组和无名分组的区别

3. 有多个app的共存路由区分

from  app1 import  views as app1_views
from app2 import views as app2_views
#当出现app1 和app2 多个app存在时, 可以取别名来认识 as app1_views | app2_views
url(r'^app1_index/', app1_views.index),
url(r'^app2_index/', app2_views.index),
#各自去自己的index 内拿想要的信息 ,不会冲突,因为有别名来识别
在settings.py 文件内 添加最后的信息'app1.apps.App1Config','app2.apps.App2Config',
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app.apps.AppConfig',
'app1.apps.App1Config',
'app2.apps.App2Config',
]

区分多个app的路由方法一

例题:
1.from django.conf.urls import include
# 在总路由里面添加 include
2.urlpatterns = [
url(r'^app01/', include('app01.urls')),
url(r'^app02/', include('app02.urls')),
]
# 在总路由写include 分发出去
3. 在各自的app 创建一个 urls.py 文件 并写入以下代码
from django.conf.urls import url from app1 import views urlpatterns = [
url(r'login/', views.login, name='login'),
] #注意: http访问的时候不能直接输入http://127.0.0.1:8080/login 这样识别不了
# 一定要输入http://127.0.0.1:8080/app1/login 如果是app2内的 就要输入app2 不能直接输入login

方法二: 通过路由分发

4. 小知识路由别名与方向解析的用法

6. 路由别名是干什么用的: 主要是吧路由的名字自定义,这样路由名字修改了,前台显示的也不需要修改
1. urlpatterns = [
url(r'login/', views.login ,name='login'),
]
#这里name = 'login' 这里就是定义路由别名的名字 2. <a href="{% url 'login' %}"> dianwo </a>
#在模板层 输入 {% url '别名' %} 这样就是定义好了路由别名 7. 反向解析的作用可以后台映射拿到前面模板的内容信息: 注意:反向解析,解析的是路由别名,使用反向解析一定要先设置好路由别名
例题:
1. 在views 界面 添加 reverse
from django.shortcuts import render, HttpResponse, redirect, reverse 2. url(r'login/',views.login,name='login'), #无参数
url(r'login/(\d+)/$',views.login,name='login'), #无名分组
url(r'login/(?P<id>\d+)/$',views.login,name='login'), #有名分组 3. {% url 'index' %} #无参数 在模板层
{% url 'index' 123 % } # 无名分组 在模板层
{% url 'index' id=446 %} # 又名分组 在模板层 4. url =reverse('login') #无参数
url = reverse('index',args=(123,)) #无名参数
url = reverse('login', kwargs={'id':446}) #有名参数 例题:
def delete_flag_ready(request, id): print("可以删除") url = reverse('delete_flag_test', kwargs={'id': id}) # 反解对有名分组传参
url = reverse('delete_flag_test', args=(id, )) # 反解对无名分组传参
print('>>>', url)
return redirect(url)
else:
# 直接返回 index
print("无需删除")
url = reverse('index') #注意,这里的反向解析,'index'是路由别名
return redirect(url)

解析与路由别名

5. 案例:

'''
主路由:
from django.conf.urls import include
urlpatterns = [
url(r'^app01/', include('app01.urls', namespace='app01')),
url(r'^app02/', include('app02.urls', namespace='app02')),
] app01应用下路由
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^test/', views.test, name='test')
] app02应用下路由
from django.conf.urls import url
from app02 import views
urlpatterns = [
url(r'^test/', views.test, name='test')
] 前端页面反向解析:{% url 'app01:test' %} | {% url 'app02:test' %}
视图函数reverse方法:url = reverse('app01:test') | url = reverse('app02:test')
'''

案例综合运用

Django的路由层详情的更多相关文章

  1. Django的路由层和视图层

    一丶Django 的路由层(URLconf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django ...

  2. Django系列(二):Django的路由层,视图层和模板层

    1.Django的路由层 URL配置(URLconf)就像Django所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:我们就是以这种方式告诉Django,对于客户端发来的某 ...

  3. 第三章、Django之路由层

    目录 第三章.Django之路由层 一 路由的作用 二 简单的路由配置 三 分组 四 路由分发 五 反向解析 六 名称空间 七 django2.0版的re_path与path 第三章.Django之路 ...

  4. 02-01 Django之路由层

    Django之路由层 一 路由的作用 路由即请求地址与视图函数的映射关系,如果把网站比喻为一本书,那路由就好比是这本书的目录,在Django中路由默认配置在urls.py中,如下图: 二 简单的路由配 ...

  5. Django框架-路由层

    Django框架-路由层 一.URL配置(URLconf) 1.基本格式 from django.conf.urls import url urlpatterns = [ url(正则表达式, vie ...

  6. Django 的路由层 视图层 模板层

    --------------------------------------------------------------通过苦难,走向欢乐.——贝多芬 Django-2的路由层(URLconf) ...

  7. Django之路由层和视图层详解

    路由层 首先我们来看一下,路由层都有哪些东西,其实你看django很人性化,将所有的介绍都放在了简介里面,不信,你看

  8. 052.Python前端Django框架路由层和视图层

    一.路由层(URLconf) 1.1 路由层简单配置 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Dj ...

  9. 关于Django中路由层(URL-conf)

    关于路由层 路由层其实就是项目中urls.py那个文件,那里面存放着url和视图函数的对应关系它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来 ...

随机推荐

  1. 峰Redis学习(7)Redis 之Keys 通用操作

    keys * 显示所有key   查找所有以s开头的key 用s*  *代表任意字符 127.0.0.1:6379> keys s* 1) "set3" 2) "s ...

  2. JS之滚动条效果

    滚动条在前端页面中是进行见到的,但是在不同的浏览器中,默认的滚动条样式不同,有些浏览器的默认样式也不好更改,因此,我们可以自定义滚动条,接下来就从一个实例开始进入滚动条. 简易进度条 首先要实现的是上 ...

  3. IDC:时钟系统

    ylbtech-IDC:时钟系统 主要应用于要求有统一时间进行生产,调度的单位如:电力,机场.轻轨.地铁.体育场馆.酒店.医院.部队.油田.水利工程等领域.大区域时钟系统主要由母钟和多台子钟构成. 1 ...

  4. [转][EasyUI]扩展 DateBox

    /** * 给时间框控件扩展一个清除的按钮 */ $.fn.datebox.defaults.cleanText = '清空'; (function ($) { var buttons = $.ext ...

  5. centos7图形化界面安装后,意外出现Please make your choice from above ['q' to quit | 'c' to continue | 'r' to refresh]

    安装完成centos7-GUI后出现如下提示: nitial setup of CentOS Linux (core) ) [x] Creat user ) [!] License informati ...

  6. U3D学习06-数学基础

    1.fixed timestep 固定帧率, 2.time scale 快慢镜头,影响的是真实时间 3.time.deltatime增量时间,物体运动不受帧频率影响,每秒移动速度需要乘deltatim ...

  7. 第7章 网络层协议(2)_ICMP协议

    2. ICMP协议 2.1 ICMP报文(Internet Control Message Protocol)的类型 报文类型 类型值 代码 描述 请求报文 8 0 请求回显报文 响应报文 0 0 回 ...

  8. Keras.applications.models权重:存储路径及加载

    网络中断原因导致keras加载vgg16等模型权重失败, 直接解决方法是:删掉下载文件,再重新下载 Windows-weights路径: C:\Users\你的用户名\.keras\models Li ...

  9. samba安装

    第一步下载: wget https://download.samba.org/pub/samba/stable/samba-4.6.7.tar.gz 看了下没看到啥有用的直接安装: ./configu ...

  10. 快速部署MySQL数据库

    一.下载对应的软件版本 下载地址:http://mirrors.sohu.com/mysql/MySQL-5.6/ [root@localhost ~]# wget -q http://mirrors ...