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

第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:横杠(-)或下划线(_)与字符或数字组成的字符串
      • uuiduuid 字符串
      • 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() 函数不区分 GETPOST,因此无法处理请求的参数

相关文章:

第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数之和&#xff0c;和3数之和的衍生吧&#xff0c;核心算法还是双指针&#xff1b; 暴力解法就不再说了&#xff1a;排序暴力set去重&#xff1b; 直接上&#xff1a;排序双指针去重 大致思路如上图&#xff0c;如果要详细算法过程&#xff0c;可以就看看两数…...

TypeScript中 interface接口 type关键字 enum枚举类型

type interface总是傻傻分不清~~~ Type Aliases (type) type 关键字用于为类型定义一个别名。这可以是基本类型、联合类型、元组、数组、函数等。type 定义的类型在编译后的 JavaScript 代码中会被移除&#xff0c;不会留下任何运行时的代码。 //联合类型 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 不存在&#xff0c;尝试…...

简述微服务高可用之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全部回车&#xff0c;密钥存储路径默认是 ~/.ssh/id_rsa 服务器 确认服务器公钥配置允许远程公钥认证 sudo vim /et…...

C++ -string -常见用法2

博客主页&#xff1a;【夜泉_ly】 本文专栏&#xff1a;【C】 欢迎点赞&#x1f44d;收藏⭐关注❤️ 文章目录 &#x1f4a1;前言&#x1f4a1;访问及遍历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 广告单元格插件的核心优势在于其无与伦比的灵活性。无论您是想要创建整齐的网格布局,还是希望打造独特的不规则设计,这款插件都能满足您的需求。 自定义网格数量&#xff1a;从 2…...

前端的AI工具:ChatGPT Canvas与Claude Artifacts对比 -仅仅是OpenAI一个迟来的追赶吗?- 贺星舰五飞试验成功

如果你对OpenAI的ChatGPT Canvas和Anthropic的Claude Artifacts有所耳闻&#xff0c;可能会想知道这两个工具有何不同&#xff0c;以及哪个能让你的工作流程更加顺畅。这两个工具旨在提升生产力&#xff0c;但侧重点各异——编码、写作、创意和实时反馈。 本文将深入探讨ChatG…...

GNU链接器(LD):输出分区类型(NOLOAD、READONLY、DSECT、COPY、INFO、OVERLAY)介绍

0 参考资料 GNU-LD-v2.30-中文手册.pdf GNU linker.pdf1 前言 一个完整的编译工具链应该包含以下4个部分&#xff1a; &#xff08;1&#xff09;编译器 &#xff08;2&#xff09;汇编器 &#xff08;3&#xff09;链接器 &#xff08;4&#xff09;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协议接入&#xff0c;并能对接入的视频流进行处理与多端分发&#xff0c;包括RTMP、RTSP、WS-FLV、HTTP-FLV、WebRTC、HLS等多种视频流格式。平台可提供视频实时监控直播、云端录像、录像检索、云存储与回看…...

HAL+M4学习记录_7

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

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算法对遥感图像进行加密和解密&#xff0c;分析加解密处理后图像的直方图&#xff0c;相关…...

MySQL insert 记录后查询是乱码问题分析

问题现象 后台应用程序使用的是云上的 MySQL 服务&#xff0c;需要给 MySQL 数据表里 insert 一些数据&#xff0c;平时都是先运行一个 MySQL 的 pod&#xff1a; kubectl run mysql-client --rm -it --restartNever --image mysql:5.7 --command -- env LANGC.UTF-8 mysql -…...

字符串算法之AC 自动机(Aho-Corasick Algorithm, 多模式匹配)详细解读

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

YoloV10改进:Block改进|使用ContextAggregation模块改善C2f模块|即插即用

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

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

shell脚本--常见案例

1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件&#xff1a; 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...