我正在使用 Django 2.0
在我的应用程序的 models.py 文件中,我定义get_absolute_url()
了获取实例的绝对 URL。该模型类用作 URL 缩短器并存储short_key
.
这将产生像
http://short_domain/key
短 url 主机域可以从设置中设置。
如果SHORT_URL_HOST
存在settings
,则将使用它,否则将使用当前网站域/主机。
我{{ instance.get_absolute_url }}
用来显示生成的短网址。
from django.conf import settings
from django.http import request
class ShortUrl(models.Model):
short_key = models.CharField(max_length=25, blank=True)
def get_absolute_url(self):
reverse_url = reverse('short-url', kwargs={'key': self.short_key})
if hasattr(settings, 'SHORT_URL_HOST'):
url_host = settings.SHORT_URL_HOST
else:
url_host = request.build_absolute_uri("/").rstrip("/")
return url_host + reverse_url
If
工作正常。但在else
声明中,我想完整地完成URI
与反向 URL 连接的当前主机。
但这给出了错误
module 'django.http.request' has no attribute 'build_absolute_uri'
如何从模型的get_absolute_url(self)
函数中返回带有域名的完整绝对 URI?