第1节 入门
文章目录
- 1. URL 组成部分详解
- 2. 第一个 Django 项目
- 2.1 项目结构
- 2.2 project 和 app 的关系
- 3. URL 与视图函数的映射
- 4. URL 的两种传参方式
- 4.1 通过字符串查询
- 4.2 在 path 中携带
- 5. path 函数详解
- 6. 路由模块化
- 7. 路由反转
1. URL 组成部分详解
URL 的基本组成格式
scheme://[username:password@]hostname[:port][/path][;parameters][?query][#fragment]
-
scheme(protocol):协议
- 常用协议:hrrp、https、ftp等
-
username、password:用户名、密码
- 某些情况下 URL 需要提供用户名和密码才能访问
-
hostname:主机地址
- 可以是域名或 IP 地址
-
port:端口
-
http://localhost:8080
-
服务器设定的端口
-
-
path:路径
- 网络资源在服务器中的指定地址
-
parameters:参数
- 用来指定访问某个资源时的附加信息
-
query:查询
- 用来查询某类资源
- 如有多个查询,则用 & 隔开
-
fragment:片段
- 对资源描述的部分补充
- 两个主要应用
- 单页面路由:Vue、React 都可以借助它来做路由管理
- HTML 锚点:控制一个页面打开时自动下滑滚动到某个特定的位置
2. 第一个 Django 项目
- 通过 Pycharm 选择 Django 项目自动创建
2.1 项目结构
- 项目名称
asgi.py
:项目的入口,用于异步服务器网关接口 (ASGI) 配置- ASGI 是一种新的协议,支持异步编程,适用于 WebSocket 等异步任务
settings.py
:项目的全局配置文件- 数据库配置
- 静态文件路径
- 安装的应用程序列表
- 中间件配置
- 安全设置
- 等
urls.py
:管理 URL 路由,定义用户请求的路径和对应视图函数之间的映射关系wsgi.py
: 项目的入口,用于同步服务器网关接口 (WSGI) 配置- WSGI 是一种规范,用于同步 Web 请求处理
- Django 默认使用它来部署
manage.py
:管理和执行 Django 命令(python manage.py [子命令]
)- 运行服务器
- 迁移数据库
- 创建应用
- 等
2.2 project 和 app 的关系
-
app
:Django 项目的组成部分- 一个
app
代表项目中的一个模块,所有 URL 请求的响应都是由app
来处理
python manage.py startapp 模块名称
- 一个
-
project
:由许多app
组成- 一个
app
可以被用到其他项目
- 一个
3. URL 与视图函数的映射
-
修改初始界面
-
urls.py
from django.http import HttpResponsedef index(request):return HttpResponse("Welcome")urlpatterns = [path("", index), ]
- 定义的跳转函数中第一个参数必须为
request
- 定义的跳转函数中第一个参数必须为
4. URL 的两种传参方式
4.1 通过字符串查询
-
book/views.py
from django.http import HttpResponsedef book_detail_query_string(request): # 通过字段查询 http://localhost:8000/book?id=3book_id = request.GET.get("id") # 等同于 request.GET["id"] 但是 get 方法更加安全,当属性不存在时会返回 None 而不是抛出异常return HttpResponse(f"book id: {book_id}")
-
urls.py
from book import viewsurlpatterns = [path("book", views.book_detail_query_string), ]
4.2 在 path 中携带
-
book/views.py
from django.http import HttpResponsedef book_detail_path_variable(request, book_id): # 在 path 中携带参数 http://localhost:8000/book/3return HttpResponse(f"book id: {book_id}")
-
urls.py
from book import viewsurlpatterns = [path("book/<int:book_id>", views.book_detail_path_variable), # 添加数据类型限制输入,并限定views.py接收到的book_id为整形 ]
5. path 函数详解
path(route, view, kwargs=None, name=None)
- route: 字符串,定义 URL 的路径部分
- 可以包含变量,例如
<int:my_variable>
,以从 URL 中捕获参数并将其传递给视图函数 - 常用数据类型
str
:不包含斜杠(/
)的非空字符串(默认)int
:非负整数slug
:横杠(-
)或下划线(_
)与字符或数字组成的字符串uuid
:uuid
字符串path
:非空字符串
- 可以包含变量,例如
- view: 视图函数,处理与给定路由匹配的请求
- 可以是一个函数或一个基于类的视图
- kwargs(可选): 一个字典,包含传递给视图函数的额外关键字参数
- name(可选): 为 URL 路由指定一个唯一的名称,以便在代码的其他地方引用它
- 这对于在模板中生成 URL 或在代码中进行重定向等操作非常有用
6. 路由模块化
-
book/urls.py
from django.urls import path from . import viewsapp_name = "book" # 指定应用名称(命名空间)urlpatterns = [path("list", views.book_list, name="book_list"),path("detail/<int:book_id>", views.book_detail, name="book_detail"), ]
-
book/views.py
from django.http import HttpResponsedef book_list(request):return HttpResponse(f"Book list")def book_detail(request, book_id):return HttpResponse(f"Book detail: {book_id}")
-
urls.py
from django.urls import includeurlpatterns = [path("book/", include("book.urls")) ]
7. 路由反转
-
urls.py
from django.http import HttpResponse from book import views from django.urls import reversedef index(request):print(reverse("index"))# /print(reverse("book:book_list")) # 获取 app 中的反转需要使用分号,即 app 名称 : url 名称# /book/listprint(reverse("book:book_detail", kwargs={"book_id": 3}))# /book/detail/3return HttpResponse("Welcome")urlpatterns = [path("", index, name='index'),path("book/", include("book.urls")), ]
-
reverse()
函数不区分GET
和POST
,因此无法处理请求的参数
相关文章:

第1节 入门
文章目录 1. URL 组成部分详解2. 第一个 Django 项目2.1 项目结构2.2 project 和 app 的关系 3. URL 与视图函数的映射4. URL 的两种传参方式4.1 通过字符串查询4.2 在 path 中携带 5. path 函数详解6. 路由模块化7. 路由反转 1. URL 组成部分详解 URL 的基本组成格式 scheme…...

四数之和(medium)08
其实这道题就是求2数之和,和3数之和的衍生吧,核心算法还是双指针; 暴力解法就不再说了:排序暴力set去重; 直接上:排序双指针去重 大致思路如上图,如果要详细算法过程,可以就看看两数…...

TypeScript中 interface接口 type关键字 enum枚举类型
type interface总是傻傻分不清~~~ Type Aliases (type) type 关键字用于为类型定义一个别名。这可以是基本类型、联合类型、元组、数组、函数等。type 定义的类型在编译后的 JavaScript 代码中会被移除,不会留下任何运行时的代码。 //联合类型 type StringOrNumbe…...

vue3.2实现AES加密解密,秘钥通过API获取,并混淆秘钥,后端thinkphp
aes.ts文件 import CryptoJS from "crypto-js"; import axios from "axios";export const encrypt async(data: any) > {let storeKey sessionStorage.getItem(a)let storeIv:any sessionStorage.getItem(i)// 如果秘钥或 IV 不存在,尝试…...

简述微服务高可用之Sentinel、Seate
简述微服务高可用之Sentinel、Seate使用 下文主要讲述使用sentinel,如何降级限流熔断及如何使用seata管理分布式事务 sentinel服务端安装与使用 1、下载 进入https://github.com/alibaba/Sentinel/releases 根据你的需求进行下载对应版本 我这里是JDK17 下载的1.8.8版本&am…...

将爱传递 将“服务好”延伸
从泰康客户,转身成为泰康人,她直言是因为亲身感受了泰康“服务好”的魅力。 入司已8年的泰康养老浙江分公司HWP何英英,是泰康“服务好”的受益者。她从朋友的理赔中见证了泰康服务好的温度与力量,又被泰康养老的职域模式所吸引选择加入泰康。如今,她全身心投入在服务的第一线,…...

基于MinIO配置bucket,用于文件下载和浏览
文章目录 引言I 配置文件浏览安装MinIO配置自启动服务访问权限配置文件浏览访问地址文件下载地址II 知识扩展MinIO内置访问策略只读策略只写策略读写策略diagnosticsconsoleAdmin引言 需求:文件下载用于OTA升级,文件浏览用于产品展示。 实现方案:基于MinIO配置bucket访问权…...

Ubuntu 配置 ssh 免密连接、安装Docker、docker-compose
Ubuntu 配置 ssh 免密连接 本机 #生成密钥 ssh-keygen -t rsa -b 4096 #发送公钥到服务器 ssh-copy-id usernameremote_host #测试 ssh usernameremote_host全部回车,密钥存储路径默认是 ~/.ssh/id_rsa 服务器 确认服务器公钥配置允许远程公钥认证 sudo vim /et…...

C++ -string -常见用法2
博客主页:【夜泉_ly】 本文专栏:【C】 欢迎点赞👍收藏⭐关注❤️ 文章目录 💡前言💡访问及遍历1.速览2.operator[] -重点⭐2.1函数原型2.2用法2.3与at 3.迭代器3.1函数原型3.2用法速览3.3简介 4.范围for4.1用法速览4.2…...

为您的 WordPress 网站打造完美广告布局 A5广告单元格插件
一个为 WordPress 网站量身定制的强大工具,它将彻底改变您展示广告的方式 灵活多变的布局设计 A5 广告单元格插件的核心优势在于其无与伦比的灵活性。无论您是想要创建整齐的网格布局,还是希望打造独特的不规则设计,这款插件都能满足您的需求。 自定义网格数量:从 2…...

前端的AI工具:ChatGPT Canvas与Claude Artifacts对比 -仅仅是OpenAI一个迟来的追赶吗?- 贺星舰五飞试验成功
如果你对OpenAI的ChatGPT Canvas和Anthropic的Claude Artifacts有所耳闻,可能会想知道这两个工具有何不同,以及哪个能让你的工作流程更加顺畅。这两个工具旨在提升生产力,但侧重点各异——编码、写作、创意和实时反馈。 本文将深入探讨ChatG…...

GNU链接器(LD):输出分区类型(NOLOAD、READONLY、DSECT、COPY、INFO、OVERLAY)介绍
0 参考资料 GNU-LD-v2.30-中文手册.pdf GNU linker.pdf1 前言 一个完整的编译工具链应该包含以下4个部分: (1)编译器 (2)汇编器 (3)链接器 (4)lib库 在GNU工具链中&…...

【MySQL】表的查询操作——SELECT
目录 1.select的基本使用 1.1.查询所有列 1.2.查询特定列 1.3.DISTINCT关键字的使用——查询不重复的年级 1.4.带条件的查询 1.5.排序查询结果 1.6.LIMIT的使用——限制返回的行数 1.7.组合使用 WHERE、ORDER BY 和 LIMIT 1.8.查询字段为表达式 1.9.为查询结果指定别名…...

天地伟业NVR管理工具EasyNVR平台多个NVR同时管理运行后日志一直在打印error
视频安防监控平台天地伟业NVR管理工具EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTMP、RTSP、WS-FLV、HTTP-FLV、WebRTC、HLS等多种视频流格式。平台可提供视频实时监控直播、云端录像、录像检索、云存储与回看…...

HAL+M4学习记录_7
一、TIM 记录学习HAL配置TIM定时器 1.1 简介 TIM(timer)定时器,16位或32位(TIM2和TIM5)计数器、预分频器(16位)、自动重装寄存器的时基单元;可对输入时钟进行计数,在计数…...

mysql 慢查询日志slowlog
慢查询参数 slow log 输出示例 # Time: 2024-08-08T22:39:12.80425308:00 #查询结束时间戳 # UserHost: root[root] localhost [] Id: 83 # Query_time: 2.331306 Lock_time: 0.000003 Rows_sent: 9762500 Rows_examined: 6250 SET timestamp1723127950; select *…...

基于AES的遥感图像加密算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 AES 加密算法概述 4.2 基于 AES 的遥感图像加密算法原理 5.完整程序 1.程序功能描述 通过AES算法对遥感图像进行加密和解密,分析加解密处理后图像的直方图,相关…...

MySQL insert 记录后查询是乱码问题分析
问题现象 后台应用程序使用的是云上的 MySQL 服务,需要给 MySQL 数据表里 insert 一些数据,平时都是先运行一个 MySQL 的 pod: kubectl run mysql-client --rm -it --restartNever --image mysql:5.7 --command -- env LANGC.UTF-8 mysql -…...

字符串算法之AC 自动机(Aho-Corasick Algorithm, 多模式匹配)详细解读
AC自动机(Aho-Corasick Algorithm)是一种高效的多模式字符串匹配算法,用于同时查找多个模式串(子串)在文本串中的出现位置。它结合了字典树(Trie)和有限状态机(Finite State Machine…...

YoloV10改进:Block改进|使用ContextAggregation模块改善C2f模块|即插即用
摘要 在计算机视觉领域,目标检测与实例分割任务一直是研究的热点。YoloV10作为目标检测领域的佼佼者,凭借其出色的性能和效率赢得了广泛的认可。然而,随着技术的不断进步,如何进一步提升YoloV10的性能成为了我们追求的目标。近期…...

学习之高阶编程str方法
__str__方法 问题思考:交互环境下print打印的内容和和直接输入变量,返回的内容不一样这是为什么?. 使用print打印的时候触发的是_str_方法, 注意点: 重写str,必须要记得写return. return返回的必须是一个字符串对象。 class MyClass:def _…...

FreeRTOS:事件标志组
目录 一、简介 二、 事件控制块 三、相关API 四、 应用场景 一、简介 在FreeRTOS中,使用信号量可以实现同步,但是使用信号量来同步的话任务只能与单个的任务进行同步。有时候某个任务可能会需要与多个任务进行同步,此时信号量就无能为力。…...

【高分论文密码】AI赋能大尺度空间模拟与不确定性分析及数字制图
随着AI大语言模型的广泛应用,大尺度空间模拟预测与数字制图技术在不确定性分析中的重要性日益凸显。这些技术已经成为撰写高分SCI论文的关键工具,被誉为“高分论文密码”。大尺度模拟技术能够从不同的时空尺度揭示农业生态环境领域的内在机理和时空变化规…...

智能摆件(墨水屏)
因为需要申请8k的堆,所以需要更改堆的大小 stm32修改堆栈大小(堆栈空间不足导致死机)_minimum heap size-CSDN博客...

ansible————playbook
一、playbook和ad hoc命令 ad hoc命令是单行,一个简单的任务,运行一次。ansible真正强大的地方是使用ansible的playbook重复运行多次复杂的任务。 一个play是是一组有序的任务,该paly对应着在inventory被选择的主机。一个playbook是一个包含…...

linux日志分割工具logorate快速验证配置是否有效
创建一些文件, 并修改文件的mtime(修改时间) # /var/log/test/*.log touch -d "2024-10-14" test1.log touch -d "2024-10-15" test2.log touch -d "2024-10-16" test3.log touch -d "2024-10-17" test4.log#快速创建一个1G的大文…...

Unity3D URP画面品质的上限如何详解
Unity3D是一款广泛应用于游戏开发的引擎,它提供了多种渲染管线用于实现不同的画面品质。其中一种渲染管线是Universal Render Pipeline(简称URP),它是Unity3D的一种轻量级渲染管线,专注于提供高性能和可移植性。 对惹…...

风管阻力计算
风管阻力主要包括摩擦阻力和局部阻力两大类。摩擦阻力:空气在风管内流动时,与管壁的摩擦作用导致的能量损失,与管道长度、断面尺寸、风速、空气密度等参数有关。局部阻力:风管系统中的弯头、三通、变径、阀门等部件,由于改变了气流的流动方向或速度,导致的额外能量损失,用局部阻…...

【redis】redis的多线程和IO多路复用
【redis】redis的多线程和IO多路复用 【一】前言【二】Redis单线程和多线程问题的背景【1】Redis的单线程【2】Redis为什么选择单线程?【3】Redis为什么开始利用多核?【4】Redis当前的性能瓶颈【5】Redis的主线程如何和IO线程协同 【三】IO多路复用的理解…...

webstorm 编辑器配置及配置迁移
1.下载地址 WebStorm:JetBrains 出品的 JavaScript 和 TypeScript IDE 其他版本下载地址 2.安装 点击下一步安装,可根据需要是否删除已有版本 注意: 完成安装后需要激活 3.设置快捷键 以下为个人常用可跳过或根据需要设置 如:…...