Как создать полный URL-адрес объекта в шаблоне django, используя obj.get_absolute_url? - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь передать "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

Причина, по которой я ищу это, заключается в том, чтоПервый метод не возвращает релевантный URL при разработке с использованием localhost. он вернул бы, например, этот (вымышленный) URL:

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

, в то время как я ожидаю этого:

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

1 Ответ

1 голос
/ 14 октября 2019

Чтобы использовать фреймворк sites , добавьте в файл settings.py следующее:

...
SITE_ID = 1

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

Затем запустите python manage.py migrate Это создаст таблицу базы данных 'django_site', в которой таблица имеет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>
...