如何从名称空间的 Django URL 中获取绝对字符串?

Posted

技术标签:

【中文标题】如何从名称空间的 Django URL 中获取绝对字符串?【英文标题】:How to get the absolute string from a name-spaced Django URL? 【发布时间】:2018-06-09 11:28:12 【问题描述】:

您知道如何在 Django 应用程序中使用视图中的简单函数重定向到不同的视图吗?它通常是这样的:

return redirect('myapp:my_url')

上面的重定向会将我重定向到一个绝对 URL,可能是这样的:

https://example.com/my-url/

现在,我的问题是,如何在我的视图中使用函数将https://example.com/my-url/ 作为字符串获取?我不想重定向,我只想获取它,并将其保存在我的变量中。

所以,通过这样做:

print my_function('myapp:my_url')

我们会在终端中得到这样的输出:

https://example.com/my-url/

有什么帮助吗?谢谢!

【问题讨论】:

这对你有用吗? docs.djangoproject.com/en/2.0/ref/models/instances/… 其实我想你想要的:docs.djangoproject.com/en/2.0/ref/urlresolvers/… 【参考方案1】:

您可以使用您已经提到的reverse 函数获取URL 的“路径”元素(即/my-url/)。

可以使用request.build_absolute_uri()添加网站的域名。

print(request.build_absolute_uri(reverse('myapp:my_url'))

请注意,我在此示例中使用的是 Python 3 打印语法。

【讨论】:

以上是关于如何从名称空间的 Django URL 中获取绝对字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Django QuerySet 中获取绝对图像 URL 列表?

包含名称空间的 url 之前的 django url 参数

Django 获取绝对 URL

如何在 Django 中获取服务器名称以获得完整的 url?

python Django:在视图中获取绝对URL(用于图像)

django路由层 反向解析和名称空间