gpt4 book ai didi

python - Django 按名称获取 url 正则表达式

转载 作者:太空狗 更新时间:2023-10-29 17:49:58 25 4
gpt4 key购买 nike

我有一个案例,我定义了一些 Django url 模式,现在我想检索与给定模式关联的正则表达式。我想要它是因为我想将这些正则表达式传递给客户端,这样我也可以在客户端中检查 url(我说的是浏览器端历史操作)并在匹配时触发适当的处理程序(在 JavaScript 中)。

例如,如果我有:

# urls.py
urlpatterns = patterns("",
url(r"^$", Index.as_view(), name="index"),
url(r"^user/", include("User.urls", namespace="User")),
)

# User/urls.py
urlpatterns = patterns("",
url(r"^profile/(?P<slug>.*)$", GetProfile.as_view(), name="get_profile")
)

那么我需要以下功能:

>>> get_regex("User:get_profile")
'^user/profile/(?P<slug>.*)$'

(或者 Django 翻译它)。请注意,我使用的是 namespace 。有任何想法吗? Django1.5.

此外,我还设法编写了一个函数,该函数返回与传递的名称关联的 urlpattern 对象,但是执行 url.regex.pattern返回 '^profile/(?P<slug>.*)$ .因此,正如您所见,没有领先的 ^user/ .

最佳答案

有几个 javascript reverse 实现。

http://djangojs.readthedocs.org/en/latest/djangojs.html#reverse-urls

https://github.com/version2/django-js-reverse

这不是正则表达式,但您可以像在服务器中一样在客户端代码中测试 url,所以我认为它更好。

编辑:由于您需要忽略 URL 参数,您可以从 django-js 的源代码中得到一个想法 here .它已经删除了可选的 URL 参数,因此它可能与您描述的非常相似。

代码遍历每个模式,从每个参数子正则表达式中删除 ?P,因此您可以将它们替换为 .*

重点是您在该源中拥有您可能需要执行实现的每个正则表达式。请参阅第 24-29 行中的全局模式。

关于python - Django 按名称获取 url 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18653278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com