Django之template,djangotemplate

來源:互聯網
上載者:User

Django之template,djangotemplate

一.介紹

在HTML的基礎上加上範本語言(包括:會被替換掉的變數和標籤)

二.模板文法之變數( {{ }} )

2.1 基本用法

 views:

def index(request):    import datetime    s="hello"    l=[111,222,333]    # 列表    dic={"name":"yuan","age":18}  # 字典    date = datetime.date(1993, 5, 2)   # 日期對象     class Person(object):        def __init__(self,name):            self.name=name     person_yuan=Person("yuan")  # 自訂類對象    person_egon=Person("egon")    person_alex=Person("alex")     person_list=[person_yuan,person_egon,person_alex]      return render(request,"index.html",{"l":l,"dic":dic,"date":date,"person_list":person_list})

template:

<h4>{{s}}</h4>#通過'.'引用<h4>列表:{{ l.0 }}</h4><h4>列表:{{ l.2 }}</h4><h4>字典:{{ dic.name }}</h4><h4>日期:{{ date.year }}</h4><h4>類對象列表:{{ person_list.0.name }}</h4>#通過'.'引用對象的方法<h4>字典:{{ dic.name.upper }}</h4>

2.2 過濾器

 文法:

{{ 變數|過濾器:參數 }}
#加法{{ i|add:5}}#如果一個變數是false或者為空白,使用給定的預設值。否則,使用變數的值{{ value|default:"nothing" }}#傳回值的長度。它對字串和列表都起作用{{ value|length }}#將值格式化為一個 “人類可讀的” 檔案尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等){{ value|filesizeformat }}#如果 value=datetime.datetime.now(){{ value|date:"Y-m-d" }}#切片{{ value|slice:"2:-1" }}#截斷字串。截斷的字串將以可翻譯的省略符號序列(“...”)結尾。{{ value|truncatechars:9 }}#截斷word。截斷的word將以可翻譯的省略符號序列(“...”)結尾{{ value|truncatewords:2 }}'''Django的模板中會對HTML標籤和JS等文法標籤進行自動轉義,原因顯而易見,這樣是為了安全。但是有的時候我們可能不希望這些HTML元素被轉義,比如我們做一個內容管理系統,後台添加的文章中是經過修飾的,這些修飾可能是通過一個類似於FCKeditor編輯加註了HTML修飾符的文本,如果自動轉義的話顯示的就是保護HTML標籤的源檔案。為了在Django中關閉HTML的自動轉義有兩種方式,如果是一個單獨的變數我們可以通過過濾器“|safe”的方式告訴Django這段代碼是安全的不必轉義。'''value="<a href="">點擊</a>"{{ value|safe}}

三.模板文法之標籤( {% %} )

3.1 標籤操作

#for迴圈{% for person in person_list %}    <p>{{ person.name }}</p>{% endfor %}{% for key,val in dic.items %}    <p>{{ key }}:{{ val }}</p>{% endfor %}#for...empty{% for person in person_list %}    <p>{{ person.name }}</p>{% empty %}    <p>sorry,no person here</p>{% endfor %}
#if{% if num > 100 or num < 0 %}    <p>無效</p>{% elif num > 80 and num < 100 %}    <p>優秀</p>{% else %}    <p>湊活吧</p>{% endif %}
#url{{% url ... %}}

3.2 模板繼承

模版繼承可以讓您建立一個基本的“骨架”模版,它包含您網站中的全部元素,並且可以定義能夠被子模版覆蓋的 blocks 。

先建立一個母板

<!DOCTYPE html><html lang="en"><head>    <link rel="stylesheet" href="style.css" />    <title>{% block title %}My amazing site{%/span> endblock %}</title></head><body>    <div id="sidebar">        {% block sidebar %}        <ul>            <li><a href="/">Home</a></li>            <li><a href="/blog/">Blog</a></li>        </ul>        {% endblock %}    </div>    <div id="content">        {% block content %}{% endblock %}    </div></body></html>

利用母板的html:

{% extends "base.html" %} {% block title %}My amazing blog{% endblock %} {% block content %}{% for entry in blog_entries %}    <h2>{{ entry.title }}</h2>    <p>{{ entry.body }}</p>{% endfor %}{% endblock %}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.