如何将命名的Django URL反转为定义它的urlpattern?

2024-10-06 13:24:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我的Django应用程序包含两个外部引用,例如应用程序的blog,它不是Django代码库的一部分,托管在不同的子域上。在

到目前为止,指向这些的链接以直接绝对url的形式散布在源代码中。在

现在我想知道是否有一种方法可以将Django优秀的URL路由系统也用于这些外部URL。我想我可以这样定义他们:

url(r'^permalink/blog/$', RedirectView.as_view(url='https://blog.example.com'), name='blog'),

然后我可以在模板中将它们引用为{% url 'blog' %}。这很管用。在


现在我想知道是否有一种方法可以通过一个特殊的(自定义的)模板标记将这些内容直接解析为“final”URL,从而使它们对用户显示为https://blog.example.com,而不是{}(对浏览器)或{}(对用户)。我已经有了一个自定义的{% absolute_url %}模板标记,我在需要绝对url的模板中使用它,比如事务性电子邮件。在

但是,我找不到一种方法来将一个命名的URL(比如external:blog)反转为它的URL模式,而不是它的最终相对URL。为了自己完成这项工作,我似乎需要复制URLNode.render()中的所有代码,加上urlresolvers.reverse以及{}的部分代码。这是一大堆代码,但是我没有看到一个更简单的进入点/钩子。我错过了一个把戏吗?在


总而言之,我基本上是在寻找一个可以将命名URL传递给的函数,例如

^{pr2}$

并获得一个RegexURLPattern实例,例如

RegexURLPattern(r'^permalink/blog/$', RedirectView('https://blog.example.com'), {}, 'blog')

或者也许仅仅是视野也可以。在


Tags: django方法代码用户https标记com模板