python Tags 母板 組件 靜態文件相關 自定義simpletag inclusion_tag

一.Tags(一)for  1.基本用法    <ul>        {% for user in user_list %}            <li>{{ user.name }}</li>        {% endfor %}    </ul>    2.for循環可用的一些參數    forloop.counter    當前循環的索引值(從1開始)    forloop.counter0   當前循環的索引值(從0開始)    forloop.revcounter      當前循環的倒序索引值(從1開始)    forloop.revcounter0        當前循環的倒序索引值(從0開始)    forloop.first      當前循環是否是第一次循環(布爾值)    forloop.last       當前循環是否是最後一次循環(布爾值)    forloop.parentloop     本層循環的外層循環(二)for...empty    <ul>        {% for user in user_list %}            <li>{{ user.name }}</li>        {% empty %}            <li>空空如也</li>        {% endfor %}    </ul>(三)if elif 和else    {% if user_list %}      用戶人數:{{ user_list|length }}    {% elif black_list %}      黑名單數:{{ black_list|length }}    {% else %}      沒有用戶    {% endif %}(四)if ...else    {% if user_list|length > 5 %}      七座豪華SUV    {% else %}        黃包車    {% endif %}if語句支持 and 、or、==、>、<、!=、<=、>=、in、not in、is、is not判斷。(五)with    定義一箇中間變量   {% with p_list.0.name as  chenrun %}   {{chenrun}}(六)csrf_token    這個標籤用於跨站請求僞造保護。    在頁面的form表單裏面寫上{% csrf_token %}(七)注意事項    1. Django的模板語言不支持連續判斷,即不支持如下寫法:        {% if a > b > c %}        ...        {% endif %}        能夠寫成 a>b and b>c    2. Django的模板語言中屬性的優先級大於方法         def xx(request):            d = {"a": 1, "b": 2, "c": 3, "items": "100"}            return render(request, "xx.html", {"data": d})    如上,咱們在使用render方法渲染一個頁面的時候,傳的字典d有一個key是items而且還有默認的 d.items() 方法,    此時在模板語言中:  {{ data.items }}     默認會取d的items key的值。二.母板    咱們一般會在母板中定義頁面專用的CSS塊和JS塊,方便子頁面替換(一).繼承母板    在子頁面中在頁面最上方使用下面的語法來繼承母板。    語法:     {% extends 'layouts.html' %}(二)塊(block)    經過在母板中使用{% block  xxx %}來定義"塊"。         {% block page_panel %}        <h3 class="panel-title">出版社列表</h3>        {% endblock %}    在子頁面中經過定義母板中的block名來對應替換母板中相應的內容        {% block page_panel %}        <h3 class="panel-title">書名列表</h3>        {% endblock %}三.組件    能夠將經常使用的頁面內容如導航條,頁尾信息等組件保存在單獨的文件中,而後在須要使用的地方按以下語法導入便可。    {% include 'navbar.html' %}四.靜態文件相關(一)第一種方式static1.導入    {% load static %}2.使用    <script src="{% static "mytest.js" %}"></script>注意:某個文件多處被用到能夠存爲一個變量    {% load static %}    {% static "images/hi.jpg" as myphoto %}    <img src="{{ myphoto }}"></img>(二)第二種方式 get_static_prefix    {% load static %}    <img src="{% get_static_prefix %}images/hi.jpg"  alt="Hi!" />或者:    {% load static %}    {% get_static_prefix as STATIC_PREFIX %}    <img src="{{ STATIC_PREFIX }}images/hi.jpg" alt="Hi!" />五.自定義simpletag    相似於自定義filter,只不過接收更靈活的參數    1.在app下建立templatetags    2.在templatetags下建立mydefination.py    3.註冊 simple tag        @register.simple_tag(name="plus")        def plus(a, b, c):            return "{} + {} + {}".format(a, b, c)    4.使用自定義simple tag        {% load mydefination %}        {% plus "1" "2" "abc" %}六.inclusion_tag    多用於返回html代碼片斷    1.在app下建立templatetags    2.在templatetags下建立mydefination.py    3.templatetags註冊 inclusion_tag        @register.inclusion_tag('result.html')        def show_results(n):            n = 1 if n < 1 else int(n)            data = ["第{}項".format(i) for i in range(1, n+1)]            return {"data": data}    4.templates/result.html    <ul>      {% for choice in data %}        <li>{{ choice }}</li>      {% endfor %}    </ul>    5.templates/index.html    <body>        {% load my_inclusion %}        {% show_results 10 %}    </body>
相關文章
相關標籤/搜索