用于捕获 URL 中所有文件夹(包括正斜杠)的正则表达式模式

2024-03-31

我想要匹配动态创建的 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/

so till BASE_URL/api/:user_id/常见。我可以捕获 user_id 但想捕获单个字符串变量上的 user_id 之后的其他参数。
之后,可以有任意数量的文件夹,我想将它们全部捕获在一个字符串变量中。
就像捕获的第一个 URL 字符串变量一样"foldera/folder1/"对于下一个 url 字符串变量将是"folderb/folder2/folder3/folder4"与 fwd 斜杠一起。

我应该在 urls.py 中编写什么正则表达式模式来捕获此文件夹?
我尝试过re_path(r'(?P<user_id>[-\w]+)/(?P<customUrl>(.*?)(?:\/)?$)/.*', customLink, name='customLink'),

但无法让它发挥作用。


您可以匹配除最后一个可选尾部斜线之外的所有斜线:

re_path(r'(?P<user_id>[-\w]+)/(?P<custom_url>.*?)/?$', customLink, name='customLink'),

在视图中,您可以使用以下方式分割端点:

def customLink(request, user_id, custom_url):
    endpoints = custom_url.split('/')
    # …

您还可以使用路径转换器:

# app_name/converters.py

class EndpointsConverter:
    regex = ".*?"
    
    def to_python(self, value):
        return value.split('/')
    
    def to_url(self, value):
        if isinstance(value, str):
            return value
        return '/'.join(value)

然后你可以使用路径转换器:

from django.urls import path, register_converter
from app_name.converters import EndpointsConverter

register_converter(EndpointsConverter, 'endpoints')

urlpatterns = [
    path('<str:user_id>/<endpoints:endpoints>/', customLink, name='customLink'),
    # …
]

这将自动用斜杠分割(并连接)端点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于捕获 URL 中所有文件夹(包括正斜杠)的正则表达式模式 的相关文章

  • 如何从 pandas 数据框中的列中删除字符串值

    我正在尝试编写一些代码 以逗号分隔数据帧列中的字符串 因此它成为一个列表 并从该列表中删除某个字符串 如果存在 删除不需要的字符串后 我想再次以逗号加入列表元素 我的数据框如下所示 df Column1 Column2 0 a a b c
  • Nginx merge_slashes 重定向

    我在我的 Java 应用程序中使用 nginx 我的问题是 nginx 正在合并斜杠 我无法将我的网站重定向到正确的版本 例如 http goout cz cs koncerty praha 被合并到 http goout cz cs ko
  • 更新到 1.11:TypeError build_attrs() 最多接受 2 个参数(给定 3 个)

    我从 1 10 7 更新到 1 11 0 在查看表单时收到以下错误 我根本无法理解我的形式有什么问题 其他形式的工作方式相同 我怀疑这可能是与任何一个的相互作用select2 https github com applegrew djang
  • Django - 如何指定验证失败的字段?

    我在管理页面中显示了这个模型 class Dog models Model bark volume models DecimalField unladen speed models DecimalField def clean self i
  • [Regex]::Replace() 和 -replace 有什么区别?

    我明白了之间的区别 Replace and replace 但是什么是 replace and Regex Replace 我测试了以下两个代码 但对我来说结果完全相同 我还提到了 PowerShell Cookbook O reilly
  • Django HTTPS 和 HTTP 会话

    我使用 Django 1 1 1 和 ssl 重定向中间件 通过 HTTPS 创建的会话数据 身份验证等 在站点的 HTTP 部分中不可用 无需将整个站点设置为 HTTPS 即可使其可用的最佳方法是什么 这是设计使然 您无法轻易更改 当通过
  • HTMX 用于处理来自 django 后端的消息

    我想使用 HTMX 来显示来自 django 后端的消息 经过大量的试验和错误 我最终得到了一个可行的解决方案 我想把它留给任何寻找它的人 另外 请随时发表您的建议 不幸的是 除了一点点example https github com ad
  • Django + nginx + uwsgi 无法登录

    我有非常简单的登录逻辑 类似于官方 Django 解决方案 class Login FormView template name login html form class AuthenticationForm def get self a
  • 正则表达式验证字符串是否包含三个非空白字符

    我使用欧芹 js 来验证输入 并且使用 data parsley pattern 它允许我传递正则表达式 我正在尝试验证该字符串以确保它至少包含三个非空白字符 下面是应该无效或有效的字符串 valid 1 2 b invalid 1 b s
  • 如何在url请求中发送数组

    我的要求如下 我想给出演员姓名 开始日期 结束日期并获取他在该时期出演的所有电影 因此 我的服务请求是这样的 http localhost 8080 MovieDB GetJson name Actor startDate 20120101
  • PHP URL 验证

    我知道有无数的线程问这个问题 但我一直无法找到一个可以帮助我解决这个问题的线程 我基本上试图解析大约 10 000 000 个 URL 的列表 确保它们根据以下标准有效 然后获取根域 URL 此列表包含您能想象到的几乎所有内容 包括类似的内
  • 使用标签或 href 传递 Django 数据

    我有一个包含链接的表 当单击该链接进行更多操作时 我想将一些数据传递给我的函数 my html table tbody for query in queries tr td value a href internal my func que
  • 跨应用程序使用 Django 模型?

    因此 在我的 Django 项目中 我有几个不同的应用程序 每个应用程序都有自己的模型 视图 模板等 让这些应用程序进行通信的好方法 Django 方式 是什么 一个具体的例子是一个会议应用程序 它有一个会议模型 我有一个家庭应用程序 我想
  • 如何使用基于类的视图处理表单(通过 get 或 post)?

    我正在尝试学习基于类的视图 因为详细信息或列表视图并不那么复杂 我有一个搜索表单 我只想看看是否发送查询来显示结果 这是函数代码 不是我的 来自 django 书籍 def search page request form SearchFo
  • RegularExpressionValidator.ValidationExpression 强制长度为 10 或 12 个符号

    RegularExpressionValidator ValidationExpression d 10 仅表示数字 最多 10 位 RegularExpressionValidator ValidationExpression d 10
  • “WSGIRequest”对象没有属性“successful_authenticator”

    我已经创建了一个像这样的身份验证类 RESTful API 的令牌身份验证 是否应该定期更改令牌 https stackoverflow com questions 14567586 token authentication for res
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • Grep 和 Python

    我需要一种通过 Unix 命令行中的正则表达式使用 grep 搜索文件的方法 例如 当我在命令行中输入 python pythonfile py RE file to be searched 我需要正则表达式 RE 在文件中搜索并打印出匹配
  • 使用 posix shell 测试字符串中的正则表达式

    如何测试字符串是否与特定字符串匹配正则表达式与基本 无 bash 或任何其他 posix shell 脚本 在 if 语句中 您可以使用expr在 POSIX shell 中计算正则表达式的命令 s Abc expr s alpha 3 e
  • grep 两个分隔符之间的子字符串

    我有很多bash使用的脚本perl内的表达式grep为了提取两个分隔符之间的子字符串 例子 echo BeginMiddleEnd grep oP lt Begin End 问题是 当我将这些脚本移植到运行的平台时busybox 融合的 g

随机推荐