Django多个路由指向同一个页面
一、背景
请求地址有个后缀不断变化,需要一个动态路由匹配,让这个请求地址都指向同一个方法,且获取这个后缀的值
二、解决方法
搜索了有好几种方法,我这里只使用了其中一种:路由变量
上面 Django 定义的路由只能代表一个页面,为了使路由指向多个不同的页面,可以在路由中定义变量
变量类型有:整型、字符串、slug、uuid 4 种
其中:
1、字符串:匹配任何非空字符串,但不包含斜杠,默认使用字符串类型 //<param>
2、整型:匹配任何非负数 //<int:param>
3、slug:匹配 ASCII 字符以及连接线和下划线,可理解为注释、后缀或附属等概念 //<slug:param>
4、uuid:匹配一个 uuid 格式的对象,为了防止路由冲突,所有字母必须小写,然后用 - 连接起来,比如:0755-2323-1111-abcd-3f3g //<uuid:param>
#urls.py文件
urlpatterns = [ path('users', aiclues.users), path('api/task/<task_id>/record/<record_id>/download', clues.record_task), ]
#views文件内容
def record_task(request, task_id, record_id): if request.method == 'GET': data = {"code": 200, "status": "success", "message": "返回成功","data": {"task_id": task_id,"record_id":record_id}} data = json.dumps(data) return HttpResponse(data, content_type='application/json')
三、参考文章
原文链接:https://cloud.tencent.com/developer/article/1624246
四、其他方法
参考文章中的额外变量
# urls.py(App) # 新建一个路由地址airpython # 指向视图函数with_extra_params # 并带有参数,参数通过字典定义 path('airpython', views.with_extra_params, {'extra_param': 'AirPython'}), # views.py(App) def with_extra_params(request, extra_param): """ 带额外的参数 :param request: :param extra_param: :return: """ return HttpResponse('Welcome to attention ' + extra_param)

浙公网安备 33010602011771号