urls.py路由系统分发的本质

路由系统分发的本质

反向生成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/

原文地址:https://www.cnblogs.com/baolin2200/p/8297185.html

时间: 2024-08-30 13:19:19

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

Django学习系列之路由系统

一.基于App的路由 作用: 根据App对路由规则进行分类,在全局urls.py包含某个项目的urls.py 示例 定义全局urls.py(全局路由系统) #导入include from django.conf.urls import url,include from django.contrib import admin #导入app下的view函数 from learn import views urlpatterns = [ url(r'^admin/', admin.site.urls)

路由层 urls.py

1. 数据操作 ''' 表字段的增删改查: 新增的字段: 1.直接提供默认值 default 2.设置改字段可以为空 null=True 注意的是 不要轻易的注释models.py中任何跟数据库相关的代码 主要是跟数据库相关的代码 你在处理的时候一定要小心谨慎 ''' # 数据的增删改查: # 1.数据的查: # get(): res = models.User.objects.get(username=username) # 1.条件存在的情况下 获取的直接是数据对象本身 # 2.条件不存在的

Django 笔记 05 urls.py详解

urls.py: URL分发器(路由配置文件) URL配置(URLconf )就像是 Django 所支撑网站的目录.它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表. 你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码.URL的加载是从配置文件中开始的. 执行 django-admin.py startproject 时,该脚本会自动为你建了一份 URLconf(即 urls.py 文件).在同时自动创建的setting

路由系统(urls.py)

路由系统(urls.py) 正则表达式匹配 urls.py from django.conf.urls import url from . import views urlpatterns = [ url(r'^articles/2003/$', views.special_case_2003), url(r'^articles/([0-9]{4})/$', views.year_archive), ] Django 2.0版本中的路由系统已经替换成下面的写法 from django.urls

Django 路由 urls.py

URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. urlpatterns = [ url(正则表达式, views视图函数,参数,别名), ] 通过循环对于多个url匹配会从上到下,匹配成功后就直接执行对应的视图函数,直接break跳出循环 参数说明: 一个正则表达式字符串 一个可调用对象,通常为一个视图函数或一个指定视图函

stark组件前戏(3)之django路由分发的本质include

django路由分发的三张方式 方式一: from django.urls import re_path, include urlpatterns = [ re_path(r'^web/', include('app01:urls')), ] include的返回值: return (urlconf_module, app_name, namespace) 方式二: # include函数主要返回有三个元素的一个元组. # app01/urls.py urlpatterns = [ re_pat

路由分发的本质

from django.conf.urls import url from django.contrib import admin from django.shortcuts import HttpResponse # 路由分发的本质 def test1(request): return HttpResponse('text1') def test2(request): return HttpResponse('text2') def test3(request): return HttpRes

Django基础二之URL路由系统

一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. 基本格式  from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参数request,和

Django之URL路由系统

一 URL配置 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表.你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码. 基本格式  1 2 3 4 5 from django.conf.urls import url #循环urlpatterns,找到对应的函数执行,匹配上一个路径就找到对应的函数执行,就不再往下循环了,并给函数传一个参