路由系统分发的本质

反向生成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. 3. Python 字典 常用办法总结

    Python字典客储存任意类型的对象,如字符串.数字.元祖.列表.字典.bool等. 优点:取值方便,速度快 1.创建字典 字典由键(key)和对应值(value)成对组成. 字典也被称作关联数组或哈 ...

  2. Effective C++ 笔记

    无参构造函数如何暴躁的构造. 先来看看标准的raw_memory : *sizeof(int)); // create int raw memory int *intVars = static_cas ...

  3. 【转】浅析Python中的struct模块

    [转]浅析Python中的struct模块 最近在学习python网络编程这一块,在写简单的socket通信代码时,遇到了struct这个模块的使用,当时不太清楚这到底有和作用,后来查阅了相关资料大概 ...

  4. C实战:项目构建Make,Automake,CMake【转】

    转自:https://blog.csdn.net/dc_726/article/details/48978849 版权声明:本文为博主原创文章,未经博主允许不得转载.欢迎访问 http://blog. ...

  5. javascript高级程序语言学习笔记

    1.加法操作符(+)的用法 第一种情况,如果两个操作符都是数值,执行常规的加法计算. 第二种情况,如果两个操作数都是字符串,则将第二个操作数与第一个操作数拼接起来. 第三种情况,只有一个操作数是字符串 ...

  6. OninitDialog与OnCreate两个消息有何区别

    WM_INITDIALOGThe WM_INITDIALOG message is sent to the dialog box procedure immediately before a dial ...

  7. php正则替换函数-----preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

    preg_replace — 执行一个正则表达式的搜索和替换 说明 mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $ ...

  8. Laravel 5.2分页--怎么在一个页面实现两个以上的列表分页,互不影响?

    今天就碰到这样的一个问题?想在一个页面里面放两个列表,并且两个列表都可以进行分页. 但是,laravel提供的分页方法很方便,可是两个以上就出问题了,当我点其中一个分页的链接时候,页面上其余的分页跟着 ...

  9. Spring Cloud源码分析(四)Zuul:核心过滤器

    通过之前发布的<Spring Cloud构建微服务架构(五)服务网关>一文,相信大家对于Spring Cloud Zuul已经有了一个基础的认识.通过前文的介绍,我们对于Zuul的第一印象 ...

  10. 44)django-环境变量设置

    如果外面程序需要调用django,就需要设置django环境指明调用那个项目. # _*_ coding:utf-8 _*_ __author__ = "shisanjun" im ...