中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

django中怎么自定義過濾器

發布時間:2021-07-20 16:12:54 來源:億速云 閱讀:123 作者:Leah 欄目:開發技術

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

1、需要傳遞到template的數據,在 views.py 中的index函數中

latest_article_list 是一個Article對象的列表,包含文章ID、作者、發布時間、分類等各種信息

dic['tag_list'] 為一個列表(文章標簽列表)

articles_info是一個以字典為元素的列表,而且該字典中 鍵'article'對應的不是普通變量,而是一個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中,可以先遍歷列表,得到每一個字典變量;

 {% for article_info in articles_info %}

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

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

3、自定義過濾器

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

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

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中,首先需要通過標簽加載上面定義的過濾器文件 articleinfo.py,然后就是index.html模板中調用過濾器了,具體的使用方法見下面的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 }} 獲取到對應的ID值,所以只好雙重過濾器來實現了。

index.html

{% for article_info in articles_info %}
  <div class="row">
    <article class="col-xs-12">
      <h4><a id="article_title", href="/focus/{{ article_info|get_key:" rel="external nofollow" article"|get_attr:"id" }}">{{ article_info|get_key:"article"|get_attr:"title" }}</a></h4>
      <div class="article_info">
        <span class="">{{ article_info|get_key:"article"|get_attr:"author" }}</span>
        <span class="">{{ article_info|get_key:"article"|get_attr:"create_time"|date:"Y-m-d H:i" }}</span>
      </div>
      <div class="category">
        分類:
         <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class>{{ article_info|get_key:"article"|get_attr:"category" }}</a>
      </div>
      <div class="category">
        標簽:
        {% for tag in article_info|get_key:"tag_list" %}
          <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >{{ tag }}</a>
        {% endfor %}
      </div>
      <p>{{ article_info|get_key:"article"|get_attr:"content"|truncatechars_html:80 | safe }}</p>
      <p><button class="btn btn-default" onclick="window.location.href='/focus/{{ article_info|get_key:"article"|get_attr:"id" }}' ">Read More</button></p>
      <ul class="list-inline">
        <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><span class="glyphicon glyphicon-comment"></span>{{ article_info|get_key:"article"|get_attr:"comment_num" }} Comments</a></li>
        <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><span class="glyphicon glyphicon-thumbs-up"></span>{{ article_info|get_key:"article"|get_attr:"like_num" }} Likes</a></li>
      </ul>
    </article>
  </div>      
  <hr>
{% endfor %}

上述內容就是django中怎么自定義過濾器,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安化县| 青神县| 体育| 沙田区| 轮台县| 南川市| 阳东县| 公主岭市| 大兴区| 河池市| 建昌县| 自治县| 吉水县| 开阳县| 乃东县| 溧水县| 寿光市| 西宁市| 甘孜| 鄂伦春自治旗| 广水市| 壤塘县| 泸定县| 原阳县| 辉县市| 余姚市| 萝北县| 东乡| 凤山县| 南安市| 黄骅市| 岑巩县| 黎川县| 高雄市| 铜陵市| 吐鲁番市| 赤壁市| 玉屏| 五常市| 苍梧县| 甘孜县|