如何使用“obj.get_absolute_url”在 Django 模板中构建完整的 url 对象?

How to build full url of object in django template using `obj.get_absolute_url'?

我正在尝试向 "sharethis" data-url 提供对象的完整 url(域 + absolute_url)。目前,我在 django 模板中这样做:

<div class="sharethis-inline-share-buttons" data-url="http://www.my-domain.com{{program.get_absolute_url}}"></div>

但是,我想要一个更好的方法来获得这部分:

http://www.my-domain.com

我寻找这个的原因是第一种方法在使用 localhost 的开发中 return 没有相关 url。 它会 return,例如,这个(虚构的)url:

http://www.my-domain.com/objects/object_slug-object_pk/

而我期待的是:

127.0.0.1.com:8000/objects/object_slug-object_pk/

要使用 sites framwork,请将以下内容添加到 settings.py 文件。

...
SITE_ID = 1

INSTALLED_APPS = [
  ...
  'django.contrib.sites',
]

然后运行python manage.py migrate 这将创建数据库 table 'django_site' table 有 3 列 id、域、名称。

设置此项,以便在您的本地副本上 id = 1, domain='127.0.0.1:8000', name='Test Server',在实时服务器上 id = 1, domain='www.my-domain.com', name='my-domain'

这应该允许您在视图中使用以下内容。

from django.contrib.sites.models import Site
from django.shortcuts import render

full_url = 'https://%s' % (Site.objects.get_current().domain)


return render(request, 'template.html', {'domain': domain, })

在模板中使用

<div class="sharethis-inline-share-buttons" data-url="{{domain}}{{program.get_absolute_url}}"></div>