Django:使用 python 方法

我正在尝试截断正在填充到 html 表中的网址,如下所示:

{% for x in queryset %}
<tr> 
<td>{{x.LINK}}</td>
</tr>

这样 ie 'www.google.com' 就变成 'google'。如何实现?在 python 中,方法很简单.split('.'),但在这里我很困惑。或者也许在 django 中查询数据之前完成所有数据修改会更简单?


潇湘沐
浏览 72回答 1
1回答

ABOUTYOU

编辑:刚刚注意到您的示例包含一个简化但格式错误的 URL。这个更简单的模板标签适用于“www.google.com”格式的网址:@register.simple_tag()def get_domain_name_from_url(url):&nbsp; &nbsp; return url.split('.')[-2]如果您执意要在模板中执行此操作,则可以创建自定义模板标记:只要您的网址格式正确(例如“https://www.google.com/”),这应该可以解决问题:from django import templateregister = template.Library()from urllib.parse import urlparse@register.simple_tag()def get_domain_name_from_url(url):&nbsp; &nbsp; parsed_url = urlparse(url)&nbsp; &nbsp; netloc = parsed_url[1]&nbsp; &nbsp; domain_name = netloc.split('.')[-2]&nbsp; &nbsp; return domain_name怎么运行的:urlparse将域解析为一个包含 6 项的命名元组。第二个元组项 (&nbsp;parsed_url[1]) 是包含 URL 的网络位置部分的字符串(例如"www.google.com")使用 将字符串拆分为其组成部分split('.'),并返回列表中的倒数第二项 (&nbsp;"google")。通过获取 TLD ( ) 之前的部分.com,我们可以避免从头开始工作时出现的任何问题。(例如,如果 URL 不包含www,我们将需要列表中的第一项,而不是第二项。通过从 TLD 开始并使用反向词,我们应该始终获得域名。)将代码保存在名为[your_django_project]/[your_app]/templatetags/get_domain_name.py.确保该应用程序位于您的INSTALLED_APPSin中settings.py。重新启动服务器。(不要忘记这部分。服务器在启动时会注册您的模板标签。)现在,在您的模板中,您可以加载代码:{%&nbsp;load&nbsp;get_domain_name&nbsp;%} {%&nbsp;get_domain_name_from_url&nbsp;x.LINK&nbsp;%}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python