Django绝对URL

4

我是Django的新手,之前一直使用PHP CodeIgniter。在CI中,为了在href中放置绝对URL,我会调用URL helper函数base_url

<?php echo base_url().'user/login';?>


这段代码会输出类似这样的结果
http://localhost/projectname/user/login
我想在Django中实现同样的效果,但是没有得到任何理解的答案。我不想使用相对路径,期望的结果应该是像这样的:

{% url 'login' %}

上面的代码应该返回:http://localhost/projectname/user/login

你期望的结果是什么? - Danish Ali
我已经编辑了我的问题,请检查。 - dvijparekh
如果你要在/projectname/下提供所有项目的URL,你需要将其添加到根URL中告诉Django。或者你需要设置你的服务器,在代理到你的Django应用服务器时从路径中删除它。但是当你构建绝对URI时,你必须手动添加它。我认为第一种方法更好。这样你就可以使用相对URL了。 - dirkgroten
请使用https://docs.djangoproject.com/en/2.1/ref/request-response/#django.http.HttpRequest.build_absolute_uri,它是https://dev59.com/zXE95IYBdhLWcg3wXcnd的副本。 - Risadinha
1
可能是如何在Django中获取完整/绝对URL(带域)?的重复问题。 - Risadinha
2个回答

4

如果我把我的项目放在服务器上任何项目的子文件夹中,例如从 https://domainname.com/ 到 https://domainname.com/xyz_folder ,它会工作吗? - dvijparekh
@dvijparekh 是的,按照 Django 的官方文档,它应该能解决问题。请查看此链接: https://docs.djangoproject.com/en/2.1/ref/request-response/#django.http.HttpRequest.get_host - Shubho Shaha

1
如果您在 urls.py 文件中定义了以下 URL 路径:
path('user/', views.user, name='user_list')

然后你可以在模板中像这样调用此URL:
<a href="{% url 'user_list' %}">Users</a>

请查看https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#url了解详情。

对于绝对URL,您可以使用以下内容:

<a href="{{ request.get_host }}{% url 'user_list' %}">Users</a>

我想在渲染HTML时显示绝对URL,但上述代码仅显示相对URL。 - dvijparekh
在这种情况下,您可以使用 <a href="{{ request.get_host }}{% url 'user_list' %}">Users</a> - Rakib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接