Django:使用python方法
我试图截断正在填充到html表中的URL,如下所示:Django:使用python方法,python,django,methods,Python,Django,Methods,我试图截断正在填充到html表中的URL,如下所示: {% for x in queryset %} <tr> <td>{{x.LINK}}</td> </tr> {%x在queryset%} {{x.LINK} 因此,即“www.google.com”变成了“google”。如何实现?在python中,使用.split('.')方法是很简单的,但这里我感到困惑。 或者在django中查询数据之前进行所有数据修改会更简单?编辑:刚刚注意到您的
{% for x in queryset %}
<tr>
<td>{{x.LINK}}</td>
</tr>
{%x在queryset%}
{{x.LINK}
因此,即“www.google.com”变成了“google”。如何实现?在python中,使用.split('.')
方法是很简单的,但这里我感到困惑。
或者在django中查询数据之前进行所有数据修改会更简单?编辑:刚刚注意到您的示例包含一个简化但格式错误的URL。这个更简单的模板标签适用于格式类似“www.google.com”的URL:
@register.simple_tag()
def get_domain_name_from_url(url):
return url.split('.')[-2]
如果您一心想在模板中执行此操作,则可以自定义: 只要您的URL格式正确(例如“https://www.google.com/)的情况下,这应该可以做到:
from django import template
register = template.Library()
from urllib.parse import urlparse
@register.simple_tag()
def get_domain_name_from_url(url):
parsed_url = urlparse(url)
netloc = parsed_url[1]
domain_name = netloc.split('.')[-2]
return domain_name
工作原理:
urlparse
将域解析为一个名为tuple的6项parsed_url[1]
)是一个包含url的网络位置部分的字符串(例如“www.google.com”
)Split('.')
将字符串拆分为其组成部分,并返回列表中最后一项(“google”
)。通过在TLD(.com
)之前获取零件,我们可以避免从头开始工作时出现的任何问题。(例如,如果URL不包含www
,我们将需要列表中的第一项,而不是第二项。通过从TLD和工作背景词开始,我们应该始终获得域名。)[your_django_project]/[your_app]/templatetags/get_domain_name.py
的文件中
确保应用程序位于设置.py中的已安装的应用程序中
重新启动服务器。(不要忘记这一部分。服务器启动时会注册模板标记。)
现在,在模板中,您可以加载以下代码:
{% load get_domain_name %}
{% get_domain_name_from_url x.LINK %}
您应该能够在{%%}
块中使用几乎所有有效的Python