0

我正在使用 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?

4

0 回答 0