用于捕获 URL 中所有文件夹(包括正斜杠)的正则表达式模式
我想要匹配动态创建的网址,其中可以有多个文件夹。为此需要一些正则表达式模式。对于前。
http://127.0.0.1:8000/api/:user_id/:foldersa/:folders1/
http://127.0.0.1:8000/api/:user_id/:foldersb/:folders2/:folders3/:folders4
http://127.0.0.1:8000/api/:user_id/:foldersc/:folders2/
http://127.0.0.1:8000/api/:user_id/:foldersd/:folders1/:folders2/
所以直到 BASE_URL/api/:user_id/
很常见。我可以捕获 user_id,但想捕获单个字符串变量上的 user_id 之后的其他参数。
之后,可以有任意数量的文件夹,我想将它们全部捕获到一个字符串变量中。
就像捕获的第一个 URL 字符串变量将是 "foldera/folder1/"
一样,对于下一个 url 字符串变量将是 "folderb/folder2/folder3/folder4" 以及 fwd 斜杠。
我应该在 urls.py 中编写什么正则表达式模式来捕获此文件夹?
我尝试过 re_path(r'(?P
但无法让它工作。
I want to match dynamically created URLs which can have multiple folders. Need some regex pattern for this. For ex.
http://127.0.0.1:8000/api/:user_id/:foldersa/:folders1/
http://127.0.0.1:8000/api/:user_id/:foldersb/:folders2/:folders3/:folders4
http://127.0.0.1:8000/api/:user_id/:foldersc/:folders2/
http://127.0.0.1:8000/api/:user_id/:foldersd/:folders1/:folders2/
so till BASE_URL/api/:user_id/
is common. I can catch user_id but want to catch other params after user_id on a single string variable.
after that, there can be any number of folders and I want to catch them all in one single string variable.
like for first URL string variable caught will be "foldera/folder1/"
and for next url string variable will be "folderb/folder2/folder3/folder4"
along with fwd slashes.
What regex pattern should I write in urls.py for capturing this folders?
I tried withre_path(r'(?P<user_id>[-\w]+)/(?P<customUrl>(.*?)(?:\/)?$)/.*', customLink, name='customLink'),
but couldn't get it to work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以匹配除最后一个可选尾部斜线之外的所有内容:
在视图中,您可以使用以下方式拆分端点: 您
还可以使用路径转换器:
然后您可以使用路径转换器:
这将自动拆分(并加入)端点端点由斜线表示。
You can match all but the last optional trailing slash:
in the view you can then split the endpoints with:
You can also make use of a path converter:
then you can work with a path converter:
this will automatically split (and join) the endpoints by the slashes.