分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

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

发布时间:2023-09-06 01:37责任编辑:董明明关键词:url

路由系统分发的本质

反向生成redirect跳转url

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

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

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

from django.shortcuts import render, HttpResponse, redirectfrom django.shortcuts import reversedef 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, includefrom django.contrib import adminfrom app01 import viewsurlpatterns = [ ???# 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 urlfrom cmdb import viewsurlpatterns = [ ???# 跳转到该应用中的 views 视图函数中 ???url(r'^hosts/$', views.hosts),]

反向生成URL地址,指定namespace

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

from django.conf.urls import url, includefrom django.contrib import adminfrom app01 import viewsurlpatterns = [ ???# 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, redirectfrom django.shortcuts import reversedef index(request): ???return HttpResponse("hello")def login(request): ???# 登录成功后,跳转到 openstack 应用的 主机列表页面 ???return redirect(reverse("o:hosts"))

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

from django.conf.urls import urlfrom app01 import viewsurlpatterns = [ ???# 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路由系统分发的本质

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved