URL结构
Uniform Resource Locator,标识互联网上的某个资源的地址
protocol://hostname[:port]/path[?query][# fragment]
protocol,传输协议,如http,https,ftp
hostname,服务器地址,ip:port/域名
path, 访问路径,即路由
?query,查询字符串
#fragment,锚点,用于跳到指定位置
如:
http://127.0.0.1:8000/book/update/?title=“机器学习”
在浏览器地址栏,输入上面地址,回车
django的处理流程:
1.根据配置文件中ROOT_URLCONF 找到主路由配置文件
主路由匹配/book/update/这个路径
当主路由匹配到book/(根据实际设定),则分发到book 应用,继续在应用下的路由配置文件中继续匹配剩下的内容
2. 若能完全匹配该URL,则执行相应的视图函数
3. 否则,返回404
示例代码
# 主路由 urls.py
from django.urls import path,include
from django.contrib import admin
urlpatterns = [
path("admin/",admin.site.urls),
#在URL开头匹配到book/,则分发到book应用
path("book/",include("book.urls")),
]
# 分布式路由
# book/urls.py
from django.urls import path,include
from book.views import update
urlpatterns = [
path("update/",update),#匹配到url,则执行对应的视图函数
]
#视图函数
#book/views.py
from django.http import HttpResponse
def update(request):
#逻辑处理
#调用模型类 读写数据
return HttpResponse("更新成功")
path转换器
str,匹配除了 / 以外的非空字符串 path(“v1/book/<str:name>”)
urlpatterns = [
path("v1/book/<str:name>",func)
]
#请求URL
#/v1/book/tom
#/v1/book/jack
#/v1/book/lucy
#最后的人名 为变化的字符串,为捕获到这部分内容,需使用str path转换器
#视图函数
#str path转换器匹配到的内容,以位置参数的方式,传给视图函数
def func(request,name):
return HttpResponse("当前的人名:%s"%name)
同样有其他的path 转换器
int,匹配非负整数 path(“v1/book/<int:number>”)
slug,匹配任意的字母,数字,下划线组成
path(“v1/book/<slug:sl>”)
path,匹配非空字段,包括 /
正则匹配URL
from django.urls import re_path
from django.conf.urls import url
urlpatterns = [
re_path("regex",view_func),
url("regex",view_func),
]
练习
-
路由http://127.0.0.1:8000/3/add/5
浏览器请求以上地址,返回 计 算 结 果 8 计算结果8 计算结果8 的响应
功能说明
add, 3+5
sub,3-5
mul,3*5
div, 3/5 -
路由http://127.0.0.1:8000/birthday/2015/12/10
浏览器请求以上地址,返回 2015 年 12 月 10 日 2015年12月10日 2015年12月10日 的响应
代码实现
提取码:ys6w