Django 如何构建依赖于站点的 URL?

Posted

技术标签:

【中文标题】Django 如何构建依赖于站点的 URL?【英文标题】:How does Django build URLs that depend on a site? 【发布时间】:2014-03-27 16:58:41 【问题描述】:

我正在尝试找出 Django 如何构建 URL,尤其是那些依赖于多个站点的 URL。 Django 在哪里构建 URL 以及站点域是如何添加到用户定义的 URL 模式的?

基本上,我有几个 Django CMS 页面和多个 Django 站点。我需要知道如何为依赖于与当前站点不同的站点的页面创建 URL;即,如何将正确站点的域添加到页面的 URL。

【问题讨论】:

站点域不是由 Django 预先设置的。 Django 只处理域之后的部分。 如果我有多个站点(也就是 Django 站点),如何正确构建 URL? 多个网站?你的意思是多个应用程序? 我猜他的意思是多个项目。 不,不。我说的是使用 contrib 模块 sites 的多个站点。基本上我使用 Django CMS 并在多个站点上创建了多个页面。我需要知道如何将正确的网站添加到页面的 URL。 【参考方案1】:

似乎必须手动将 Django 站点的域添加到 URL。来自Django's docs:

>>> from django.contrib.sites.models import Site
>>> obj = MyModel.objects.get(id=3)
>>> obj.get_absolute_url()
'/mymodel/objects/3/'
>>> Site.objects.get_current().domain
'example.com'
>>> 'http://%s%s' % (Site.objects.get_current().domain, obj.get_absolute_url())
'http://example.com/mymodel/objects/3/'

【讨论】:

以上是关于Django 如何构建依赖于站点的 URL?的主要内容,如果未能解决你的问题,请参考以下文章

如何在由“站点”框架提供支持的多个 Django 站点中获取唯一用户?

在应用程序 django 中使用 % url 'admin' % 引用管理站点

Django 管理站点 URL 路由问题/不一致

反向自定义 django 管理站点 url?

Django i18n:如何不翻译管理站点?

具有父 url 参数的自定义 Django 管理站点