路由配置
path()函数
导入 - from django.urlsimport path
语法- path(route,views,name=None)
参数:
1.route: 字符串类型,匹配的请求路径
2.views:指定路径所对应的视图处理函数的名称后面不要加()
3.name: 为地址起别名,在模板中地址反向解析时使用
path转换器
语法:<转换器类型:自定义名>
作用:若转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给视图函数
例子: path('page/<int:page>',views.xxx)
转换器类型 | 作用 | 样例 |
---|---|---|
str | 匹配除了之外的非空字符串 | “v1/users/str:username"匹配/v1/users/guoxiaonao |
int | 匹配0或任何正整数。返回一个int | page/int:page”匹配page/100 |
slug | 匹配任意由 ASCII 字母或数字以及连字符和下划线组成的短标签 | "detail/slug:sl”匹配/detail/this-is-django |
path | 匹配非空字段,包括路径分隔符’/’ | "v1/users/path:ph匹配/1/users/a/b/c |
做一个有计算器功能的网址
urls.py中
path('<int:n>/<str:op>/<int:m>', views.cal_view, name='cal_page')
views.py中
def cal_view(request, n, op, m):
if op not in ['add', 'sub', 'mul']:
return HttpResponse('Your op is wrong!')
result = 0
if op == 'add':
result = n + m
elif op == 'sub':
result = n - m
elif op == 'mul':
result = n * m
return HttpResponse('结果为:%s'%(result))
re_path0函数
在url的匹配过程中可以使用正则表达式进行精确匹配
语法:
re path(reg,view,name=xxx)
正则表达式为命名分组模式(?P<name>pattern);匹配提取参数后用关键字传参方式传递 给视图函数
eg:
re_path(r'^(?P<x>\d{1,2})/(?P<op>\w+)/(?P<y>\d{1,2})$', views.cal2_view, name='cal2_page')