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 站点中获取唯一用户?