路由系统分发的本质

反向生成redirect跳转url

1.在urls.py中指定url的name

from django.conf.urls import url
from django.contrib import admin from app01 import views urlpatterns = [
url(r'^index/', views.index, name="INDEX"),
url(r'^login/', views.login),
]

2.在views视图函数中使用reverse指定 INDEX地址

from django.shortcuts import render, HttpResponse, redirect
from django.shortcuts import reverse def index(request):
return HttpResponse("hello") def login(request):
# 通过reverse("INDEX") 指向 "INDEX" 别名
return redirect(reverse("INDEX"))

应用url的分发include

1.将包含cmdb应用的url请求,转发给cmdb引用中的urls.py中

from django.conf.urls import url, include
from django.contrib import admin from app01 import views urlpatterns = [
# 127.0.0.1:8000/cmdb/xxxx/ cmdb的url 转到cmdb 应用下的urls中
url(r'^cmdb/', include("cmdb.urls")),
]

2.在指定APP的项目中,创建一个 urls.py文件

from django.conf.urls import url
from cmdb import views urlpatterns = [
# 跳转到该应用中的 views 视图函数中
url(r'^hosts/$', views.hosts),
]

反向生成URL地址,指定namespace

1.将指定app的url跳转,加上namespace="o",指定跳转到哪个应用app

from django.conf.urls import url, include
from django.contrib import admin from app01 import views urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^index/', views.index, name="INDEX"),
url(r'^login/', views.login),
url(r'^cmdb/', include("cmdb.urls", namespace="c")),
url(r'^openstack/', include("openstack.urls", namespace="o")),
]

2.在views的视图函数中,使用redirect跳转路径时需要加上前缀"o:hosts"

from django.shortcuts import render, HttpResponse, redirect
from django.shortcuts import reverse def index(request):
return HttpResponse("hello") def login(request):
# 登录成功后,跳转到 openstack 应用的 主机列表页面
return redirect(reverse("o:hosts"))

通过 循环的形式 添加URL地址

from django.conf.urls import url

from app01 import views

urlpatterns = [
# url(r'^admin/', admin.site.urls),
# url(r'^index/', views.index, name="INDEX"),
url(r'^login/', views.login),
] # 通过for 循环将,生成的url 添加到 urlpatterns 中
for i in range(10):
temp = []
for j in range(5):
temp.append(url(r'^inner_%s/' % j, views.login))
v = url(r'^login_%s/' % i, (temp, None, None))
urlpatterns.append(v)

输出,生成的url列表:

^login/
^login_0/ ^inner_0/
^login_0/ ^inner_1/
^login_0/ ^inner_2/
^login_0/ ^inner_3/
^login_0/ ^inner_4/
^login_1/
^login_2/
^login_3/
^login_4/
^login_5/
^login_6/
^login_7/
^login_8/
^login_9/

urls.py路由系统分发的本质的更多相关文章

  1. Django之urls.py路由配置(URLConf)

    urls.py路由配置(URLConf) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. 基本格式: Django1.x版本 ...

  2. python django url直接访问txt文件。urls.py路由直接指向txt文件

    from django.views.generic import TemplateView urlpatterns = [ url(r'^test/',TemplateView.as_view(tem ...

  3. Django学习系列之路由系统

    一.基于App的路由 作用: 根据App对路由规则进行分类,在全局urls.py包含某个项目的urls.py 示例 定义全局urls.py(全局路由系统) #导入include from django ...

  4. Django 的路由系统

    Django 的路由系统   Django 的路由系统 路由层 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^$',views.ho ...

  5. Django的urls(路由)

    目录 Django的urls(路由) 正则表达式详解 路由匹配(分组匹配) 无名分组 有名分组 反向解析 无名分组反向解析 有名分组反向解析 路由分发 名称空间 虚拟环境 伪静态 Django的url ...

  6. django介绍及路由系统

    第一:Python的web框架介绍 Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引 ...

  7. django中路由系统和视图的对应关系(值的传递)-->主要内容(位置参数、关键字参数、额外参数、include分组[urls的分发]、命名分组、反向解析、APPEND_SLASH)

    路由系统也就是 urls.py文件,视图就是 views.py文件 路由系统里面要注意的事项 urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续. 若要从UR ...

  8. django路由系统及分发路由的本质

    路由系统 当我们启动一个django项目后,想要通过浏览器访问到django项目中的资源 就需要在django中的urls项目中进行路由配置 urlpatterns = [ url(r'^admin/ ...

  9. Django框架——基础之路由系统(urls.py)

    1.URL路由系统前言 URL是Web服务的入口,用户通过浏览器发送过来的任何请求,都是发送到一个指定的URL地址,然后被响应. 在Django项目中编写路由,就是向外暴露我们接收哪些URL的请求,除 ...

随机推荐

  1. SIFT+BOW 实现图像检索

    原文地址:https://blog.csdn.net/silence2015/article/details/77374910 本文概述 图像检索是图像研究领域中一个重要的话题,广泛应用于医学,电子商 ...

  2. hibernate框架学习之二级缓存

    缓存的意义 l应用程序中使用的数据均保存在永久性存储介质之上,当应用程序需要使用数据时,从永久介质上进行获取.缓存是介于应用程序与永久性存储介质之间的一块数据存储区域.利用缓存,应用程序可以将使用的数 ...

  3. NOI2019 SX 模拟赛 no.5

    Mas 的童年 题目描述:不知道传送门有没有用? 反正就是对于每个前缀序列求一个断点,使得断点左右两个区间的 分别的异或和 的和最大 分析 jzoj 原题? 但是我 TM 代码没存账号也过期了啊! 然 ...

  4. java 解压缩 中文名称问题

    public List<String> unZip(String pathString, String zipPathString) { long startTime = System.c ...

  5. Docker入门 - 006 Docker 多种数据库的安装

    Docker 安装 MySQL 查找Docker Hub上的mysql镜像 root@VM_16_14_centos ~# docker search mysql INDEX NAME DESCRIP ...

  6. 粘包-socketserver实现并发

  7. Gradle缓存目录文件命名规则

    在打开Android Studio项目的时候,会下载项目对应版本的gradle,该版本是在项目根目录下\gradle\wrapper\gradle-wrapper.properties文件中指定的: ...

  8. XmlDocument.Load(url) url是https远程时,报错" 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。" "根据验证过程,远程证书无效。"

    XmlDocument.Load(url)  url是https远程时,报错" 基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系."   "根据验证过程, ...

  9. Confluence 6 配置管理员会话安全的备注

    禁用密码确定. Confluence 安装使用自定义授权机制有可能会在密码校验的时候遇到问题.如果必要的话,你可以设置 password.confirmation.disabled 系统属性来禁用密码 ...

  10. Confluence 6 的 WebDAV 客户端整合介绍

    WebDAV 允许用户通过一个 WebDAV 客户端来访问 Confluence.例如,微软 Windows 的 'My Network Places'.通过为访问的用户提供权限,这个用户可以在 Co ...