django路由(多应用配置动态路由正则路由)

news2025/2/25 2:16:01

一、配置全局路由

在应用下,定义视图函数views.py

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def get_order(request):
    return HttpResponse("orders应用下的路由")

在项目的urls路由配置中,映射该方法

from django.contrib import admin
from django.urls import path

from orders import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('getorder/',views.get_order)
]

二、项目有多个应用,配置子应用路由

当我们有多个应用时,会涉及到好多路由配置。如果所有的路由配置都在项目的全局urls文件中配置,数据有很多,也很杂,不利于后期维护。

好的办法就是在每个子应用下,创建一套子应用的路由。

1、在当前项目下,创建两个应用orders 、 projects

分别在两个子应用下,创建urls文件。每个应用,各个创建两条路由。写当前应用的路由信息。

orders 应用:

视图函数orders/views.py

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def get_order(request):
    return HttpResponse("获取订单信息")

def delete_order(request):
    return HttpResponse("删除订单信息")

配置orders应用的路由文件orders/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('get/',views.get_order),
    path('delete/',views.delete_order),
]

注意格式:

1、方法调用后面,没有括号 

projects 应用:

视图函数projects/views.py

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

def get_project(request):
    return HttpResponse("获取项目信息")

def delete_project(request):
    return HttpResponse("删除项目信息")

子应用下的路由配置projects/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('get/',views.get_project),
    path('delete/',views.delete_project),
]

配置全局路由

在全局路由下miaostudydjango/urls.py,引入两个子应用的路由。urls

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 映射 projects 子应用的路由
    path('projects/',include('projects.urls')),
    # 映射 orders 子应用的路由
    path('orders/',include('orders.urls')),

]

注意格式:

1、path('orders/',include('orders.urls')),

‘orders/’ ,为路由,开头没有斜杠,结尾必须以/斜杠结尾

include('orders.urls') 映射到子应用的urls文件。 注意'orders.urls' 一定要有单引号包裹。

访问url连接:

访问orders应用下的路由

http://127.0.0.1:8000/orders/get/

 http://127.0.0.1:8000/orders/delete/

访问projects应用下的路由

http://127.0.0.1:8000/projects/get/

http://127.0.0.1:8000/projects/delete/

在访问子应用的视图函数时,url分为了两节。第一节是全局路由的地址

第二节,是子应用的路由地址。

三、动态路由(Resful风格接口)

http://127.0.0.1:8000/orders/get_goods_info/1/

商品:1的信息是xx

http://127.0.0.1:8000/orders/get_goods_info/5/

商品:5的信息是xx

实现功能:

url请求中,存在一个动态的值。如上面两个请求。

1、urls配置

from django.urls import path

from . import views

urlpatterns = [
    path('get/',views.get_order),
    path('delete/',views.delete_order),
    path('get_goods_info/<int:goods_id>/',views.get_goods_info),
]

使用<>来包含用户输入的动态值

goods_id(自定义变量)用户输入的变量

int: 指定变量的类型

注意:<int:goods_id> 中不要有空格,否则会报错

2、视图函数

def get_goods_info(request,goods_id):
    return HttpResponse(f"商品:{goods_id}的信息是xx")

f""中可以直接使用变量(一种写法,替代.format())

3.1 类型转换器

如上面的  <int:goods_id> ,int: 为类型转换器

格式:

<格式转化器:参数名称>

 默认的类型转化器: int 、str 、slug 、uuid

url路由中的参数,在调用视图函数时,会自动传给视图函数。

四、正则路由

路由正则使用re_path()

from django.urls import path, re_path
re_path()

举例:

要求路由为

/project_info/三位字符/

1、视图函数

def project_info(request,project_id):
    return HttpResponse(f"项目id:{project_id}的信息介绍")

2、urls路由,正则表达式

from django.urls import path, re_path

from . import views

urlpatterns = [
    path('get/',views.get_project),
    path('delete/',views.delete_project),
    re_path(r'^project_info/(?P<project_id>\w{3})/$',views.project_info)
]

 注意:

1、正则使用re_path

2、正则必须以^开头,$结尾

3、括号中,写正则表达式 (?P<project_id>\w{3})

4、?P<project_id> 指定变量名称

访问链接:

http://127.0.0.1:8000/projects/project_info/123/

返回值:

项目id:123的信息介绍

访问不符合正则要求的4位数字链接:

http://127.0.0.1:8000/projects/project_info/1234/

接口404

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/522148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

输入URL到显示界面的整个过程

以如下这个比较简单的网络拓扑模型作为例子&#xff0c;探究中间发生的整个过程&#xff1a; 1 HTTP 浏览器做的第一步工作就是要对 URL 进行解析&#xff0c;从而生成发送给 Web 服务器的请求信息。下图展示了一条长长的URL里各个元素代表什么&#xff1a; 所以整个长长的URL…

〖C++11〗智能指针详解

「前言」文章是关于C11的智能指针方面 「归属专栏」C嘎嘎 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 人生就是一列开往坟墓的列车&#xff0c; 路途上会有很多站&#xff0c; 很难有人自始至终陪着你走完。 当陪你的人要下车时&am…

42个网工高效率工具,我只告诉你(二)

晚上好&#xff0c;我是老杨。好用工具上期更新之后&#xff0c;不少小友催我更新下期&#xff0c;这不就来了&#xff1f; 今日文章阅读福利&#xff1a;《42个好用工具下载包》 私信老杨&#xff0c;回复关键词“工具42”&#xff0c;领取2022网工好用工具大全&#xff0c;同…

软件工程师,要么不写代码,要么就写优雅的代码

何为优雅的代码 优雅的代码&#xff0c;至少需要遵循以下几个原则&#xff1a; 遵守规范 优雅的代码&#xff0c;首先让人看起来就是很整洁的。而这种整洁&#xff0c;则来源于代码规范。严格地遵守代码规范&#xff0c;是提高且保证代码质量的最有效方法。从个人开发的角度来看…

【Python入门】Python的判断语句(判断语句的嵌套)

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于Python零基础入门系列&#xff0c;本专栏主要内容为Python基础语法、判断、循环语句、函…

Linux高级(shell)

文章目录 一、shell概述Linux 提供的 Shell 解析器有bash 和 sh 的关系Centos 默认的解析器是 bash 二、shell脚本入门脚本格式第一个shell脚本&#xff1a;helloworld.sh 三、变量系统预定义变量自定义变量特殊变量 四、删除变量五、运算符六、条件判断七、流程控制if判断case…

猜谜游戏、彩云词典爬虫、SOCKS5代理的 Go(Golang) 小实践,附带全代码解释

猜谜游戏在编程语言实践都已经和 HelloWord 程序成为必不可少的新手实践环节&#xff0c;毕竟&#xff0c;它能够让我们基本熟悉 for 循环、变量定义、打印、if else 语句等等的使用&#xff0c;当我们基本熟悉该语言基础之后&#xff0c;就要学会其优势方面的程序实践&#xf…

基本类型的比较VS引用类型的比较

基本类型的比较VS引用类型的比较 数据类型的介绍 类型的比较&#xff0c;在Java中有两种数据类型&#xff0c;一种是基本数据类型&#xff0c;一中是引用类型。 基本数据类型包含一些我们常用的数据&#xff1a; 类型类型名称byte字节型int整型char字符型double浮点型boole…

计算机视觉的深度学习 Lecture15:Object Detection 笔记 EECS 498.007/008

一些介绍&#xff1a; amodal box &#xff08;非模态box&#xff1f;&#xff09; 标记隐含的物体大小 只检测一个目标的流程 同时计算分类分数和Box坐标、使用Multitask Loss。Multitask Loss现在是一种非常常见的方法。 滑动窗口检测多个目标 开销巨大&#xff08;右下…

springboot+vue银行OA系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的银行OA系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&…

声音合成——Foley Sound——DECASE项目——多模态智能感知与应用——Autoencoder代码实现(6)

文章目录 概述encoder的编写过程代码编写运行结果问题总结 decoder的编写过程知识补充关于逆卷积 代码编写运行结果总结 Autoencoder模型编写 compile方法 train方法 保存和加载模型模块编写实现代码——autoencoder代码实现代码——train代码实现代码——保存和加载模型的代…

【半监督学习】Match系列.3

半监督语义分割旨在利用尽可能少的有标注图像以及大量的无标注图像来学得一个较好的分割模型。其中&#xff0c;对有标注图像的学习一般类似于全监督语义分割&#xff0c;如计算预测结果与人工标注之间的交叉熵损失&#xff0c;问题的关键在于如何利用无标注图像。 本文简单介…

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件

【Unity】读写ProjectSettings、UserSettings、Library文件夹中的文件 AssetDatabase 类提供的 LoadAssetAtPath 方法和 CreateAsset 方法只能读写Assets、Packages文件夹中的资产&#xff0c;如果想要读写其他文件夹&#xff08;ProjectSettings、UserSettings、Library等&am…

【运筹优化】元启发式算法详解:模拟退火算法(Simulated Annealing,SA)+ 案例讲解代码实战

文章目录 一、介绍二、基础知识2.1 局部搜索(或蒙特卡罗)算法2.2 Metropolis 算法2.3 模拟退火算法 三、原理3.1 Statistical Equilibrium 统计平衡3.2 Asymptotic Convergence 渐近收敛 四、实际问题4.1 Finite-Time Approximation 有限时间近似4.2 Geometric Cooling 几何冷却…

区块元素和超连结

DIV (区块元素) <div>元素&#xff08;HTML 文件区块元素&#xff09;是无标签语意的容器元素&#xff0c;虽然它不代表任何意义&#xff0c;却是使用最多的标签之一&#xff0c;主要用来把相似或者被划分为同一区块的内容包在同个div 内&#xff0c;以便后续添加css 样…

【MyBatis】一文教你学会使用MyBatis操作数据库

文章目录 1. MyBatis是什么&#xff1f;2. 为什么要学MaBatis&#xff1f;3. MyBatis环境搭建4. MyBatis的使用4.1 简单示例4.2 获取动态参数4.2.1 ${xxx}获取动态参数4.2.2 #{xxx}获取动态参数4.2.3 #{xxx}与${xxx}获取字符串类型数据4.2.4 sql注入问题4.2.5 模糊查询like4.2.…

动态规划-背包问题-背包九讲

title: 动态规划-背包问题 date: 2023-05-12 13:01:31 categories: Algorithm动态规划 tags:动态规划 01背包问题 题目 题目链接&#xff1a;https://www.acwing.com/problem/content/description/2/ 有 N N N 件物品和一个容量是 V V V 的背包。每件物品只能使用一次。 …

数据分析05——往Pandas中导入数据

1、导入Excel&#xff1a; 注意这种方法可以导入xlsx和xls两种类型的数据读入的数据会以DataFrame的格式显示举例&#xff1a;df pd.read_excel(‘./data/demo_03.xlsx’)还可以导入excel文件中具体的某一个表格&#xff1a;pd.read_excel(‘./data/demo_03.xlsx’, sheet_na…

SD-MTSP:麻雀搜索算法SSA求解单仓库多旅行商问题(提供MATLAB代码,可以修改旅行商个数及起点)

一、单仓库多旅行商问题 多旅行商问题&#xff08;Multiple Traveling Salesman Problem, MTSP&#xff09;是著名的旅行商问题&#xff08;Traveling Salesman Problem, TSP&#xff09;的延伸&#xff0c;多旅行商问题定义为&#xff1a;给定一个&#x1d45b;座城市的城市集…

postgresql源码学习(55)—— 列中的NULL值是如何存储和判断的?

问题来自 《PostgreSQL面试题集锦》学习与回答_Hehuyi_In的博客-CSDN博客 第11题 一、 NULL值存储位置 在pg元组头数据中&#xff0c;有一个t_bits数组&#xff0c;用于存储空值位图。当元组中没有null值的时候&#xff0c;t_bits可以被认为是空的&#xff0c;当元组有null值的…