问题
我有一个类似联盟的模型
class League(models.Model):
league_name = models.CharField(max_length=60)
league_url = models.URLField(null=True, blank=True, default='')
其中 league_url
可以是指向外部联赛页面(即不是我的网站)的链接。
现在,假设用户创建了一个联赛并将 league_url 设置为“pelicanpark.com/leagues/27”。当我在模板中渲染它时, {{ league.league_url }}
它显示 http://www.pelicanpark.com/leagues/27/
占用了很多空间房地产。
所以,我需要瘦下来。我的想法是渲染类似的东西
<a href="http://www.pelicanpark.com/leagues/27/">pelicanpark.com/...</a>
但这有一些明显的复杂性。有没有人有好的解决办法?
最佳答案
可能有一些奇特的方式来使用 regex对于这种事情,但这超出了我的能力范围。幸运的是,看起来有 urlparse对于 python 。要在您的示例中实现它:
from urlparse import urlparse
class League(models.Model):
league_name = models.CharField(max_length=60)
league_url = models.URLField(null=True, blank=True, default='')
def url_text(self):
parsed_url = urlparse(self.league_url)
return parsed_url.hostname.replace("www.", "") + "/..."
然后在模板中:
<a href="{{ league.league_url }}">{{ league.url_text }}</a>
我会避免在后端渲染 html。我总是被告知这样做存在安全风险。
关于django - 如何在模板中很好地呈现 URLField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29053875/