网站服务器建设费用,flash网页制作教程,北京微网站开发,穷游网站 做行程 封面文章目录 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… 文章目录 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]schemeprotocol协议 常用协议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 的关系 appDjango 项目的组成部分 一个 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?id3book_id request.GET.get(id) # 等同于 request.GET[id] 但是 get 方法更加安全当属性不存在时会返回 None 而不是抛出异常return HttpResponse(fbook 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(fbook 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, kwargsNone, nameNone)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, namebook_list),path(detail/int:book_id, views.book_detail, namebook_detail),
]book/views.py from django.http import HttpResponsedef book_list(request):return HttpResponse(fBook list)def book_detail(request, book_id):return HttpResponse(fBook 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, nameindex),path(book/, include(book.urls)),
]reverse() 函数不区分 GET 和 POST因此无法处理请求的参数