刨析django---路由

本文介绍了Django框架中URL路由的工作原理及配置方法,包括主路由、分布式路由和视图函数的交互。通过path转换器,如str、int和slug,可以捕获并处理动态URL参数。此外,还展示了如何使用正则表达式进行更复杂的URL匹配。通过这些技术,可以实现如加减乘除运算和日期显示等特定功能的URL请求响应。
摘要由CSDN通过智能技术生成

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),
]

练习

  1. 路由http://127.0.0.1:8000/3/add/5
    浏览器请求以上地址,返回 计 算 结 果 8 计算结果8 8 的响应
    功能说明
    add, 3+5
    sub,3-5
    mul,3*5
    div, 3/5

  2. 路由http://127.0.0.1:8000/birthday/2015/12/10
    浏览器请求以上地址,返回 2015 年 12 月 10 日 2015年12月10日 20151210 的响应

代码实现
提取码:ys6w

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值