怎么逃走?Django url中的字符?

怎么逃走?Django url中的字符?,django,regex,url,Django,Regex,Url,我知道在django URL中不建议使用“?”字符(允许?),但我的要求之一是处理诸如“/files/?access\u token=”之类的外部调用,并且我无法更改它们的语法,因此我需要处理它。 我试过: 1 re_path(r'(?P<filenamename>[^/]+)(.+)access_token', views.GetFileInfo, name='get_info') 2 re_path(r'(?P<filenamename>[^/]+)(\?)acce

我知道在django URL中不建议使用“?”字符(允许?),但我的要求之一是处理诸如“/files/?access\u 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')
1 re_路径(r'(?P[^/]+)(.+)访问_令牌',views.GetFileInfo,name='get_info')
2 re_路径(r'(?P[^/]+)(\?)访问\u令牌',views.GetFileInfo,name='get\u info')
3 re_路径(r'(?P[^/]+)(?)访问_令牌',views.GetFileInfo,name='get_info')
4 re_路径(r'(?P[^/]+)?访问_令牌,views.GetFileInfo,name='get_info')
5 re_路径(r'(?P[^/]+)\?访问令牌,views.GetFileInfo,name='get_info')
但以上都不是解决办法。Top url与其他字符一起使用,但与问题符号不一起使用。我开始考虑编写自己的中间件(从来没有这样做)来更改请求的属性或使用类似于SMTH的URLR改写,但是所有这些看起来都像是处理像字符这样简单的任务的过度工程。
我错过什么了吗

这不是路径的一部分,因此
url
/
path
不知道这一点。这是最新的。它以类似字典的对象的形式存储在中

因此,您可以将路径定义为:

path('<str:magic_name>', views.GetFileInfo, name='get_info')
path(“”,views.GetFileInfo,name='get_info')
在视图中,通过以下方式获取:

def GetFileInfo(request, magic_name):
    access_token = request.GET.get('access_token')
    # …
def GetFileInfo(请求,名称):
access\u token=request.GET.GET('access\u token')

#…
这不是路径的一部分,因此
url
/
path
不知道这一点。这是最新的。它以类似字典的对象的形式存储在中

因此,您可以将路径定义为:

path('<str:magic_name>', views.GetFileInfo, name='get_info')
path(“”,views.GetFileInfo,name='get_info')
在视图中,通过以下方式获取:

def GetFileInfo(request, magic_name):
    access_token = request.GET.get('access_token')
    # …
def GetFileInfo(请求,名称):
access\u token=request.GET.GET('access\u token')

#…
您还可以使用query_参数获取查询字符串,如:

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

之后,您可以根据需要对模型数据执行获取或筛选操作。

您还可以使用query_参数获取查询字符串,如:

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

之后,您可以根据需要对模型数据执行获取或筛选操作。

这不是路径的一部分,这是查询字符串,您可以通过
请求访问这些。获取。
。添加:出现?-字符将导致404。其他r符号没有这样的问题,我已经测试过了。确切地说,因为
后面的部分(包括
)在检查要“激发”的视图之前已从URL中删除,所以如果添加
部分,它将永远不会激发该路径。这不是路径的一部分,这是查询字符串,您可以通过
请求访问这些。获取
。添加:出现?-字符将导致404。其他r符号没有这样的问题,我已经测试过了。确切地说,因为
后面的部分(包括
)在检查“fire”的视图之前从URL中删除了,所以如果添加
部分,它将永远不会触发该路径。据我所知,这是唯一可用的,在Django DRF框架中。[据我所知,这仅在Django DRF框架中可用。[嗨,Willem!从url获取参数对我来说没有问题,不是。我的问题是用?-symbol处理请求,我只是无法构建和url来捕获此类请求,但我必须这样做,因为这是外部要求。@Dadudki:正如所说,这些不属于路径部分,因此您无法捕获这些,因为它们是从在将其与视图匹配之前,请先输入url。谢谢,威廉,我现在理解了你的帖子,这是答案。嗨,威廉!从url获取参数对我来说没有问题,不。我的问题是用?-symbol处理请求,我只是无法生成和url以捕获此类请求,但我必须这样做,因为这是外部要求。@Dadudki:嗯如前所述,这些不属于路径部分,因此您无法捕获这些,因为在将其与视图匹配之前,这些已从url中剥离。谢谢,William,我现在理解了您的帖子,这是答案。