如何使用“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>
我正在尝试向 "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>