如何在Django url中转义?

问题描述 投票:1回答:1

我知道'?'字符在Django的URL中是不建议使用的,但是我的一个要求是处理外部调用,如 "files?access_token=",我不能改变它们的语法,所以我需要处理它。

1 re_path(r'(?P<filenamename>[^/]+)(.+)access_token', views.GetFileInfo, name='get_info')

2 re_path(r'(?P<filenamename>[^/]+)(\?)access_token', views.GetFileInfo, name='get_info')

3 re_path(r'(?P<filenamename>[^/]+)(?)access_token', views.GetFileInfo, name='get_info')

4 re_path(r'(?P<filenamename>[^/]+)?access_token', views.GetFileInfo, name='get_info')

5 re_path(r'(?P<filenamename>[^/]+)\?access_token', views.GetFileInfo, name='get_info')

但上面的方法都不能解决 顶端的url可以处理其他字符,但不能处理问号。我开始考虑自己写一个中间件(从来没有做过)来改变请求的属性,或者使用像url_rewrite这样的东西,但所有这些看起来都是过度工程,像处理一个字符这样的简单任务。

django regex url
1个回答
0
投票

这是 径的一部分,所以 urlpath 不知道这一点。这就是 询问串 [wiki]. 储存在 request.GET [Django-doc] 作为 QueryDict 对象[Django-doc],一个类似字典的对象。

因此,你可以将路径定义为

path('<str:magic_name>', views.GetFileInfo, name='get_info')

并在视图中用:

def GetFileInfo(request, magic_name):
    access_token = request.GET.get('access_token')
    # …

0
投票

你也可以使用query_params来获取查询字符串,如:。

access_token = request.query_params.get('access_token')

然后,你可以根据你的需求对模型数据进行获取或过滤操作。

© www.soinside.com 2019 - 2024. All rights reserved.