企业网站建设的账务处理湖州网站集约化平台
文章目录
- 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.pyfrom django.http import HttpResponsedef index(request):return HttpResponse("Welcome")urlpatterns = [path("", index), ]- 定义的跳转函数中第一个参数必须为 
request 
 - 定义的跳转函数中第一个参数必须为 
 
4. URL 的两种传参方式
4.1 通过字符串查询
-  
book/views.pyfrom 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.pyfrom book import viewsurlpatterns = [path("book", views.book_detail_query_string), ] 
4.2 在 path 中携带
-  
book/views.pyfrom django.http import HttpResponsedef book_detail_path_variable(request, book_id): # 在 path 中携带参数 http://localhost:8000/book/3return HttpResponse(f"book id: {book_id}") -  
urls.pyfrom 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.pyfrom 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.pyfrom 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.pyfrom django.urls import includeurlpatterns = [path("book/", include("book.urls")) ] 
7. 路由反转
-  
urls.pyfrom 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,因此无法处理请求的参数 
