亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django:使用 python 方法

Django:使用 python 方法

瀟湘沐 2023-08-22 10:37:38
我正在嘗試截斷正在填充到 html 表中的網址,如下所示:{% for x in queryset %} <tr>  <td>{{x.LINK}}</td> </tr>這樣 ie 'www.google.com' 就變成 'google'。如何實現?在 python 中,方法很簡單.split('.'),但在這里我很困惑?;蛘咭苍S在 django 中查詢數據之前完成所有數據修改會更簡單?
查看完整描述

1 回答

?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

編輯:剛剛注意到您的示例包含一個簡化但格式錯誤的 URL。這個更簡單的模板標簽適用于“www.google.com”格式的網址:


@register.simple_tag()

def get_domain_name_from_url(url):

    return url.split('.')[-2]

如果您執意要在模板中執行此操作,則可以創建自定義模板標記:


只要您的網址格式正確(例如“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

怎么運行的:

  1. urlparse將域解析為一個包含 6 項的命名元組。

  2. 第二個元組項 ( parsed_url[1]) 是包含 URL 的網絡位置部分的字符串(例如"www.google.com"

  3. 使用 將字符串拆分為其組成部分split('.'),并返回列表中的倒數第二項 ( "google")。通過獲取 TLD ( ) 之前的部分.com,我們可以避免從頭開始工作時出現的任何問題。(例如,如果 URL 不包含www,我們將需要列表中的第一項,而不是第二項。通過從 TLD 開始并使用反向詞,我們應該始終獲得域名。)

將代碼保存在名為[your_django_project]/[your_app]/templatetags/get_domain_name.py.

確保該應用程序位于您的INSTALLED_APPSin中settings.py。

重新啟動服務器。(不要忘記這部分。服務器在啟動時會注冊您的模板標簽。)

現在,在您的模板中,您可以加載代碼:

{% load get_domain_name %}
{% get_domain_name_from_url x.LINK %}


查看完整回答
反對 回復 2023-08-22
  • 1 回答
  • 0 關注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號