Django ----- 模板2

时间:2023-03-09 15:32:11
Django ----- 模板2

tags

for

<ul>
{% for user in user_list %}
<li>{{ user.name }}</li>
{% endfor %} #结束
</ul>

Django ----- 模板2

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 >  %}
七座豪华SUV
{% else %}
黄包车
{% endif %}

if语句支持  and、or、 ==、>、<、!=、<=、>=、in、not in、is、is not判断.

母版和继承

1.母版

  就是一个普通的HTML文件,提取多个页面的公共部分减少代码量  修改十分方便

  [注:除了公共部分,母版对应子页面需要更改的地方用{% block page-main%}内容{%endvlock}

      ]

2.继承(使用)

   在子页面中

      {% entends "base.html"%}

      {% block page-mian%}

        修改内容

      {%endblock%}

    

    注意:还会有个小问题,

      就是边侧那里, 按钮是死的,这就需要,在html 按钮输入那里,  class = {% block pub_active%}active{%endblock%}

      子页面也需要加上

3.注意事项:
    1.把{% extends 'base.html'%}
    2.修改的内容写在block中,写在外面不显示
    3.{% extends name%} name应该是变量或者是字符串 继承母版的名字
    4.母版中定义多个block块, 一般还有 js 块和css块

4.组件
    1.就是一小段HTML代码 多个页面都用到的内容 nav.html
    2.在任意的模版中使用
    {% include "nav.html" %}

5.静态文件相关
    1.{% load staticfiles %}
    2.{% static 'css文件路径' %}
      还有第二种方法: {%get_static_prefix%}~~~文件路径

      

6. 静态文件相关
    {% load static %}
    
    {% static 'css/pub.css' %} —— 》 去settings拿STATIC_URL,和css/pub.css拼接
    —— 》 /static/css/pub.css

    {% get_static_prefix %} —— 》 去settings拿STATIC_URL
      {% 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!" />
      <img src="{{ STATIC_PREFIX }}images/hi2.jpg" alt="Hello!" />

      

    {% get_static_prefix %}css/pub.css

7. 自定义simple_tag和inclusion_tag

    1. 在app下创建templatetags的python包
    2. 在templatetags创建py文件 ——》 mytags.py
    3. 在mytags写代码
      from django import template
      register = template.Library()

      @register.filter(name='dsb')
      def add_sb(value,arg):
      return ....

      @register.simple_tag
      def add_sb(arg1,arg2,*args,**kwargs):
      return ....

      @register.inclusion_tag('show_li.html')
      def show_li(n):
      return {'num': range(1, n + 1)}
8. 在模板中使用
      {% load mytags %}

      {{ 变量|dsb:'canshu' }}

      {% add_sb '' '' %}

      {% show_li 5 %}