当前位置: 首页 > news >正文

Django基础之路由

一.前言

前面我们说了django的安装于基础配置,基础知识点我就细分下来,每天和大家讲一点,今天就要和大家说django的基础知识点了,我们今天先来讲路由,内容不多,希望大家记住

二.传统路由

路由就是前面一个路径后面写上一个函数对应,而传统路由有两种写法,一种是直接给他写死,第二种动态的就是中间加上<类型:参数名>,这种在对应的视图函数里面参数也要加上这个名字,这样我们就可以获取这个动态的参数,可以看到视图函数第一个参数是request,这个参数必须得有,名字习惯叫做这个,这个就是所有的请求信息,如果我们要拿到这个get请求后面的载荷就可以通过request.GET取到

如果我们访问127.0.0.1:8000/home/?page=1

例如这个我们就可以拿到这个page的值,如果没有结果就是None

常见的类型

  • int,整数

  • str,字符串 /

  • slug,字母+数字+下滑线+-

  • uuid,uuid格式

  • path,路径,可以包含 /

三.正则表达式路由 

  • 在django1版本用的多。

  • 在django2+版本用的少

大家肯定能想到为什么为什么用的少了,这是因为django2+以后支持<int:nid>传递参数,但是我们还是得要了解正则的

我们正则路由要用re_path,这里面我们就直接写正则的符号,我们写了多少个符号对应的就要在视图函数里面加上多少个参数(request参数除外),当然如果我们想指定名字可以在正则里面写上?P<参数名字>正则内容,这样我们参数里面就要写上同名的参数

四.路由分发 

我们可以想一下,如果我们有200个api,每个api前面路由都有相同的部分,我们这么分发就会很乱,后期也特别不好维护,那我们就可以使用路由分发

4.1 include分发

我们可以先在对应的app里面创建一个urls.py的文件

 

我们在主路由里面写上user,然后include里面写上分路由的文件路径,分路由再写上后面的后面的路径加上对应的函数,这样就可以实现分发了,我们访问http://127.0.0.1:8000/user/show/就可以访问到对应的用户展示页面了

我们通常用include分发和app进行分块

4.2 手动分发

path('user/', ([
                   path('add/', views.login),
                   path('delete/', views.login),   # /user/delete/
                   path('edit/', views.login),
                   path('show/', views.login),
               ], None, None)), 

我们也可以这样进行手动分发,纯粹为了提取功能的url,后面的两个none我们读include源码就知道了,分别代表app_name和namespace,我们目前还用不上,一会用上了会说的

路由分发的本质:

URL对应函数

path('user/add/', views.login),

URL对应元组

path('user/add/',    (元素,appname元素,namespance元素)    ),

实例 

path('user/add/',    include("apps.api.urls")    ),
path('user/add/',     ([],None,None)     ), 

五.name 

name就是给一个路由起个名字 + 根据名字反向生成URL。  

我们后续一般会通过这个name来获得获取用户url来做重定向或者用户权限之类的

六.namespace

 我们前面也提到了namespace,这个就是用来辅助name的,这个在include中才用得到,给大家举个例子就知道了,假如我们有很多个app,难免会遇到重名的name,那如果我们在include里面设置不同的namespace,是不是就能通过这个namespace进行区分了

 

我们可以通过nanespace:name找到对应的具体的url,但是这里需要注意的是,当我们设置了namespace,就必须得设置appname

如果我们手动分发,这两个就不能是None了,第三个是namespace,第二个是app_name,通常让这两个同名

 七.总结

我们今天说了路由,发现还是很简单的,主要是记忆,讲了路由的分发啥啥啥的,非常简单

八.补充

今天我要在这里补充一个知识点就是为啥我们习惯在路由末尾都加上一个/,要是用了其他框架大家肯定都没这个习惯,但是django我们要在这里加上/,这是为什么呢?

这是因为django的配置里面默认APPEND_SLASH = True

如果我们在路由后面加上/,但是浏览器里面我们没有加上/,由于这个配置的存在,我们就会重定向到由/的这个url,这个配置我们也可以去更改,但是这么方便我们肯定是不会去更改的,如果我们路由里面不加上这个/那么只有当浏览器里面不带/才会有用,相当于这个配置没有用,所以我们都习惯加上这个/

我们下一期将和大家讲django中的视图,希望大家的点赞关注加收藏

相关文章:

Django基础之路由

一.前言 前面我们说了django的安装于基础配置&#xff0c;基础知识点我就细分下来&#xff0c;每天和大家讲一点&#xff0c;今天就要和大家说django的基础知识点了&#xff0c;我们今天先来讲路由&#xff0c;内容不多&#xff0c;希望大家记住 二.传统路由 路由就是前面一个…...

Python实例化中默认值的行为及应用

Python实例化中默认值的行为及应用 适合初学者阅读 本文要点 使用可变对象作为默认参数会导致所有实例共享同一对象&#xff0c;引发意外的数据修改。不可变对象作为默认参数时&#xff0c;每次实例化都会创建新的对象&#xff0c;不会共享数据。推荐使用None作为默认值&…...

【WRF后处理】WRF模拟效果评价及可视化:MB、RMSE、IOA、R

【WRF后处理】模拟效果评价及可视化 准备工作模型评价指标Python实现代码Python处理代码:导入站点及WRF模拟结果可视化图形及评价指标参考在气象和环境建模中(如使用 WRF 模型进行模拟),模型性能评价指标是用于定量评估模拟值与观测值之间偏差和拟合程度的重要工具。 本博客…...

ShenNiusModularity项目源码学习(4:身份认证)

ShenNiusModularity项目有两套启动方式&#xff0c;一种是ShenNius.Admin.Mvc项目启动&#xff0c;该项目为MVC模式&#xff0c;带前台页面&#xff0c;也有后台服务&#xff0c;另一种是ShenNius.Admin.Hosting&#xff0c;该项目启动后仅提供后台服务&#xff0c;供其它前台项…...

python+django自动化部署日志采用‌WebSocket前端实时展示

一、开发环境搭建和配置 # channels是一个用于在Django中实现WebSocket、HTTP/2和其他异步协议的库。 pip install channels#channels-redis是一个用于在Django Channels中使用Redis作为后台存储的库。它可以用于处理#WebSocket连接的持久化和消息传递。 pip install channels…...

flink学习(6)——自定义source和kafka

概述 SourceFunction:非并行数据源(并行度只能1) --接口 RichSourceFunction:多功能非并行数据源(并行度只能1) --类 ParallelSourceFunction:并行数据源(并行度能够>1) --接口 RichParallelSourceFunction:多功能并行数据源(并行度能够>1) --类 【建议使用的】 ——…...

开发常见问题及解决

1.DBeaver 报Public Key Retrieval is not allowed 在使用DBeaver连接数据库时出现“Public Key Retrieval is not allowed”错误&#xff0c;主要是因为数据库连接配置的安全策略导致的。以下是详细的解释和解决方法&#xff1a; 错误原因 这个错误通常出现在连接MySQL数据…...

python excel接口自动化测试框架!

今天采用Excel继续写一个接口自动化测试框架。 设计流程图 这张图是我的excel接口测试框架的一些设计思路。 首先读取excel文件&#xff0c;得到测试信息&#xff0c;然后通过封装的requests方法&#xff0c;用unittest进行测试。 其中&#xff0c;接口关联的参数通过正则进…...

mybatis:You have an error in your SQL syntax;

完整报错You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near false, false, false, false, false, false, false, false, false, false, false, at line 1 SQL: INSERT INTO user …...

使用 Maven 开发 IntelliJ IDEA 插件

使用 Maven 开发 IntelliJ IDEA 插件的完整流程 1. 创建 Maven 项目 1.1 使用 IntelliJ 创建 Maven 项目 打开 IntelliJ IDEA&#xff0c;点击 File > New > Project。选择 Maven&#xff0c;填写项目名称和 GroupId&#xff0c;例如&#xff1a; GroupId: com.exampl…...

Windows修复SSL/TLS协议信息泄露漏洞(CVE-2016-2183) --亲测

漏洞说明&#xff1a; 打开链接&#xff1a;https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/windows-security/restrict-cryptographic-algorithms-protocols-schannel 可以看到&#xff1a; 找到&#xff1a;应通过配置密码套件顺序来控制 TLS/SSL 密码 我们…...

uniapp生命周期:应用生命周期和页面生命周期

文章目录 1.应用的生命周期2.页面的生命周期 1.应用的生命周期 生命周期的概念&#xff1a;一个对象从创建、运行、销毁的整个过程被称为生命周期 生命周期函数&#xff1a;在生命周期中每个阶段会伴随着每一个函数的出发&#xff0c;这些函数被称为生命周期函数 所有页面都…...

基于SSM的婴幼儿用品商城系统+LW示例参考

1.项目介绍 功能模块&#xff1a;管理员&#xff08;产品管理、产品分类、会员管理、订单管理、秒杀活动、文章管理、数据统计等&#xff09;、普通用户&#xff08;登录注册、个人中心、购物车、我的收藏、各类信息查看等&#xff09;技术选型&#xff1a;SSM&#xff0c;jsp…...

【工具变量】城市供应链创新试点数据(2007-2023年)

一、测算方式&#xff1a;参考C刊《经济管理》沈坤荣和乔刚老师&#xff08;2024&#xff09;的做法&#xff0c;使用“供应链创新与应用试点”的政策虚拟变量&#xff08;TreatPost&#xff09;表征。若样本城市为试点城市&#xff0c;则赋值为 1&#xff0c;否则为 0&#xf…...

【carla生成车辆时遇到的问题】carla显示的坐标和carlaworld中提取的坐标y值相反

项目需要重新运行了一下generate_car.py的脚本&#xff0c;发现死活生成不了&#xff0c;研究了半天&#xff0c;发现脚本里面生成车辆的坐标值y和carla_ros_bridge_with_example_ego_vehicle.launch脚本打开的驾驶操控界面里面的y值正好是相反数! y1-y2 因为&#xff0c;我运行…...

Jira使用笔记二 ScriptRunner 验证问题创建角色

背景 最近在对公司Jira工作流改造&#xff0c;收到这么一个要求&#xff1a;某些问题类型只有某些角色可以创建。本来是想通过Jira内建的权限控制来处理的。结果点到权限页面&#xff0c;心都凉透了。 好吧&#xff0c;那只能上脚本了。最终使用ScriptRunner的Simple scripte…...

Java线程的使用

Java中的线程是用来实现多任务并发执行的机制。在Java中&#xff0c;主要有两种方式来创建和使用线程&#xff1a;实现Runnable接口和继承Thread类。 实现Runnable接口&#xff1a; 创建一个类&#xff0c;实现Runnable接口&#xff0c;并重写run()方法。在run()方法中定义线程…...

自动化测试工具Ranorex Studio(四十三)-RANOREXPATH编辑器5

代码示例 下面的代码示例将讲解如何使用Ranorex API来编写代码模块&#xff0c;或者是使用用户代码来扩展录制的模块。 在代码中使用对象库 使用对象库等待UI元素 建立Adapter来访问更多的属性和方法 为对象库元素建立一组Adapter 使用Validate类 强制一个测试用例失败 设置aut…...

超高流量多级缓存架构设计!

文章内容已经收录在《面试进阶之路》&#xff0c;从原理出发&#xff0c;直击面试难点&#xff0c;实现更高维度的降维打击&#xff01; 文章目录 电商-多级缓存架构设计多级缓存架构介绍多级缓存请求流程负载均衡算法的选择轮询负载均衡一致性哈希负载均衡算法选择 应用层 Ngi…...

数据结构(Java)—— ArrayList

1.线性表 线性表&#xff08; linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直线。但是在…...

SAS(Serial Attached SCSI)在企业级存储中的核心设计与实战解析

1. SAS技术在企业级存储中的核心价值 如果你拆开过企业级存储设备&#xff0c;大概率会看到那些带着蓝色或黑色连接器的硬盘背板——这就是SAS技术的战场。作为存储架构师&#xff0c;我经手过的全闪存阵列和磁盘柜里&#xff0c;90%的核心连接都依赖SAS协议。和消费级SATA相比…...

Nimbus:一个统一的具身合成数据生成框架

Zeyu He, Yuchang Zhang, Yuanzhen Zhou, Miao Tao, Hengjie Li,∗, Hui Wang, Yang Tian, Jia Zeng, Tai Wang, Wenzhe Cai, Yilun Chen, Ning Gao, Jiangmiao Pang摘要扩大数据规模和多样性对于泛化具身智能至关重要。虽然合成数据生成为昂贵的物理数据采集提供了可扩展的替代…...

运维提效实战:用 Ansible+Cron 搞定日志自动清理,再也不用半夜爬起来删日志了

前言 作为常年和服务器打交道的运维人&#xff0c;估计没人没经历过半夜被磁盘爆满告警吵醒的崩溃 —— 远程登服务器、挨个找日志文件、手动删旧日志&#xff0c;一套操作下来人彻底清醒&#xff0c;回头还得担心误删关键文件。 其实这类重复又机械的运维活儿&#xff0c;完全…...

如何用ChatALL实现AI智能协同:一次提问,多模型对比的解决方案

如何用ChatALL实现AI智能协同&#xff1a;一次提问&#xff0c;多模型对比的解决方案 【免费下载链接】ChatALL Concurrently chat with ChatGPT, Bing Chat, Bard, Alpaca, Vicuna, Claude, ChatGLM, MOSS, 讯飞星火, 文心一言 and more, discover the best answers 项目地…...

终极简单教程:如何使用bilibili-parse免费获取B站视频资源

终极简单教程&#xff1a;如何使用bilibili-parse免费获取B站视频资源 【免费下载链接】bilibili-parse bilibili Video API 项目地址: https://gitcode.com/gh_mirrors/bi/bilibili-parse 想要快速获取B站视频资源却不知道从何入手&#xff1f;bilibili-parse作为一款简…...

从零搭建企业级开源大模型平台:Ollama+Llama3+open-webui实战指南

1. 为什么选择OllamaLlama3open-webui组合&#xff1f; 最近两年大语言模型的发展速度简直让人瞠目结舌&#xff0c;从最初的GPT-3到现在的Llama3&#xff0c;模型能力突飞猛进的同时&#xff0c;部署门槛也在不断降低。作为一个在AI领域摸爬滚打多年的老手&#xff0c;我实测过…...

别再只会调库了!用NumPy和Random手搓一个SMOTE算法,我踩过的坑都在这了

从零实现SMOTE算法&#xff1a;NumPy实战与关键问题解析 理解类别不平衡问题的本质 在数据科学和机器学习领域&#xff0c;我们经常会遇到类别分布严重不均衡的数据集。想象一下&#xff0c;你正在处理一个信用卡欺诈检测项目&#xff0c;正常交易记录可能有数百万条&#xff0…...

Framer.js测试策略终极指南:构建可靠UI原型的完整测试方案

Framer.js测试策略终极指南&#xff1a;构建可靠UI原型的完整测试方案 【免费下载链接】Framer Framer - Design Everything 项目地址: https://gitcode.com/gh_mirrors/fr/Framer Framer是一款强大的UI设计和原型工具&#xff0c;能够帮助设计师和开发者快速创建交互丰…...

OpenClaw安全指南:百川2-13B模型权限管控与敏感操作防护

OpenClaw安全指南&#xff1a;百川2-13B模型权限管控与敏感操作防护 1. 为什么需要安全防护机制 去年冬天的一个深夜&#xff0c;我的OpenClaw经历了一次"惊魂时刻"。当时我让AI助手整理财务表格&#xff0c;结果它误将包含个人银行账号的临时文件上传到了云存储。…...

若依前后端分离系统生产环境部署:从零到上线的保姆级教程

若依前后端分离系统生产环境部署实战指南 引言&#xff1a;为什么选择若依框架&#xff1f; 对于刚接触企业级开发的新手来说&#xff0c;若依(RuoYi)框架无疑是一个绝佳的起点。这个基于Spring Boot和Vue.js的前后端分离架构&#xff0c;不仅提供了完善的权限管理、代码生成等…...