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)

 

posted @ 2022-07-01 10:26  sugoi  阅读(259)  评论(0)    收藏  举报