真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

django中怎么自定義過濾器-創(chuàng)新互聯(lián)

本篇文章為大家展示了django中怎么自定義過濾器,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

我們提供的服務(wù)有:做網(wǎng)站、成都做網(wǎng)站、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、蘇尼特右ssl等。為上千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的蘇尼特右網(wǎng)站制作公司

1、需要傳遞到template的數(shù)據(jù),在 views.py 中的index函數(shù)中

latest_article_list 是一個(gè)Article對象的列表,包含文章ID、作者、發(fā)布時(shí)間、分類等各種信息

dic['tag_list'] 為一個(gè)列表(文章標(biāo)簽列表)

articles_info是一個(gè)以字典為元素的列表,而且該字典中 鍵'article'對應(yīng)的不是普通變量,而是一個(gè)Article對象

view.py

def index(request):
  latest_article_list = Article.objects.query_by_time()
  articles_info = []
  dic = {}
  for article in latest_article_list:
    taginfo = Article.objects.get(id=article.id)
    dic['tag_list'] = taginfo.tags.all()
    dic['article'] = article;
    articles_info.append(dic)
    dic = {}

  loginform = LoginForm()
  context = {'articles_info':articles_info, 'loginform':loginform}
  return render(request, 'index.html', context)

2、template如何引用views傳遞過來的變量值?

在index.html中,可以先遍歷列表,得到每一個(gè)字典變量;

 {% for article_info in articles_info %}

遍歷 articles_info 之后的article_info 為一個(gè)字典,通過前面的views可以知道里面包含了一個(gè)article對象和一個(gè)tag_list列表;

對于article_info這個(gè)字典變量,在模板中卻不能通過鍵值對獲取對應(yīng)的值,更別說獲取Article對象中ID、作者、發(fā)布時(shí)間等屬性值了,為了解決這一問題,這里就需要過濾器才能實(shí)現(xiàn);

3、自定義過濾器

1)、在app目錄下建立templagetags文件夾,在此目錄下建立空文件 __init__.py和過濾器文件articleinfo.py;

2)、編輯 articleinfo.py,添加過濾器 get_key 和get_attr,get_key獲取字典不同鍵對應(yīng)的值,get_attr獲取Article對象中不同字段對應(yīng)的值;

articleinfo.py

from django import template
register = template.Library()

@register.filter
def get_key(d, key_name):
  return d.get(key_name)

@register.filter
def get_attr(d, m):
  if hasattr(d, m):
    return getattr(d, m)

4、模板中使用過濾器,獲取各種變量值;

index.html中,首先需要通過標(biāo)簽加載上面定義的過濾器文件 articleinfo.py,然后就是index.html模板中調(diào)用過濾器了,具體的使用方法見下面的index.html文件;

{% load articleinfo %}

下面的index.html中變量使用的部分代碼,使用了雙重過濾器提取出了所需要的變量;

比如第4行中

{{ article_info|get_key:"article"|get_attr:"id" }}

首先通過 article_info|get_key:"article" 獲取到字典中的article對象,但此處需要的是article對象中的ID屬性,由于并不能通過{{ article_info|get_key:"article".id }} 獲取到對應(yīng)的ID值,所以只好雙重過濾器來實(shí)現(xiàn)了。

index.html

{% for article_info in articles_info %}
  
    
      

{{ article_info|get_key:"article"|get_attr:"title" }}

               {{ article_info|get_key:"article"|get_attr:"author" }}         {{ article_info|get_key:"article"|get_attr:"create_time"|date:"Y-m-d H:i" }}       
               分類:          {{ article_info|get_key:"article"|get_attr:"category" }}       
               標(biāo)簽:         {% for tag in article_info|get_key:"tag_list" %}           {{ tag }}         {% endfor %}       
      

{{ article_info|get_key:"article"|get_attr:"content"|truncatechars_html:80 | safe }}

      

Read More

               
  • {{ article_info|get_key:"article"|get_attr:"comment_num" }} Comments
  •         
  • {{ article_info|get_key:"article"|get_attr:"like_num" }} Likes
  •                        
    {% endfor %}

    上述內(nèi)容就是django中怎么自定義過濾器,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道。

    另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


    本文名稱:django中怎么自定義過濾器-創(chuàng)新互聯(lián)
    網(wǎng)址分享:http://weahome.cn/article/disisj.html

    其他資訊

    在線咨詢

    微信咨詢

    電話咨詢

    028-86922220(工作日)

    18980820575(7×24)

    提交需求

    返回頂部