我怎么能得到完整/绝对的URL(例如https://example.com/some/path)在Django没有网站模块?这太愚蠢了……我不需要查询我的数据库来抓取URL!

我想使用reverse()。


当前回答

还有另一种方式。您可以在view.py中使用build_absolute_uri()并将其传递给模板。

view.py

def index(request):
    baseurl = request.build_absolute_uri()
    return render_to_response('your-template.html', { 'baseurl': baseurl })

your-template.html

{{ baseurl }}

其他回答

我使用这个代码:

request.build_absolute_uri('/')[:-1]

回应:

https://yourdomain.com

在做一个项目的时候,我学会了在Django中获取完整/绝对的URL。

如果你的URL在地址栏中是这样的:

https://stackoverflow.com/questions/2345708

如果你想把上面的URL显示给你的模板。

{{请求。不带GET参数。 {{请求。get_full_path}} #带有GET参数

对于上面的两个代码,这将打印在你的模板中

questions/2345708

另一种获取完整URL的方法是:

{{request.build_absolute_uri}}

这将打印在你的模板将是:

https://stackoverflow.com/questions/2345708

要从模板创建到另一个页面的完整链接,您可以使用以下命令:

{{ request.META.HTTP_HOST }}{% url 'views.my_view' my_arg %}

request.META。HTTP_HOST给出主机名,url给出相对名。然后模板引擎将它们连接成一个完整的url。

你可以试试"request.get_full_path()"

检查请求。META字典。我认为它有服务器名和服务器端口。