d:/python/demo3
目标
- 路径参数(restful)
路径参数
第1个列子
1)formapp/urls增加如下配置
path('articls//',views.year_test)
2)views.py增加如下函数
def year_test(request,year):
return render(request, 'success.html', {'year': year})
3) success.html增加如下代码
{{ year }}
3)启动服务并测试
http://127.0.0.1:8000/forms/articls/2000/
第2个例子
1)formapp/urls增加如下配置
path('articls////',views.month_test)
2)views.py增加如下函数
def month_test(request,year,month,slug):
return render(request, 'success.html', {'year': year,'month':month,'name':slug})
3) success.html增加如下代码
{{ year }}
{{ month }}
{{ name }}
3)启动服务并测试
python manage.py runserver
http://localhost:8000/forms/articls/2000/12/wangqj/
代码说明:以下路径转换器默认可用
str - 匹配除了路径分隔符'/'的任意非空字符串。 如果表达式中没有包含转换器,那么这将是默认行为。
int - 匹配0或任意正整数。 并作为 int 返回。
slug - 匹配任意的黏接字符串(slug string),这些黏接字符串是ASCII的字母或数字,词与词之间由连字符或下划线黏接组成。 例如, building-your-1st-django-site。
uuid - 匹配一个格式化的 UUID. 为了防止多个URL映射到同一页面,必须包含多个破折号(dash),同时字母必须小写。 例如, 075194d3-6885-417e-a8a8-6c931e272f00. 返回一个UUID实例。
path - 匹配包含路径分隔符 '/'在内的任意非空字符串。 相对于str,这允许你匹配一个完整的URL路径,而不仅仅是URL路径的一部分。
正则表达式
如果路径和转换器语法不足以定义你的URL模式,你还可以使用正则表达式。为了使用正则表达式,请使用re_path(),而不要使用path()。
- 语法
在Python正则表达式中,命名正则表达式组的语法是 (?Ppattern) , 这里 name 是表达式组的名字 而 pattern 是要匹配的模式。 - 例子
1)formapp/urls增加如下配置
from django.urls import path,re_path
re_path('articls/(?P[0-9]{4})/(?P [0-9]{2})/(?P [0-9]{2})/(?P [\w_-]+)/',views.day_test)
2)views.py增加如下函数
def day_test(request,year,month,day,slug):
return render(request, 'success1.html', {'year': year,'month':month,'day':day,'name':slug})
3) success1.html增加如下代码
{{ year }}
{{ month }}
{{ day }}
{{ name }}
3)启动服务并测试
python manage.py runserver
http://localhost:8000/forms/articls/2000/12/31/wang-qj/
这完成了与前面的例子大致相同的事情,但是校验更严格。比如年份只能是4位,月只能是两位,日只能是两位