Django-3. templates

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gang950502/article/details/82591622

模板的使用

基本使用方法

  1. html

    <body>
        <h1>判断</h1>
        {% if is_login %}
            <h4>变量使用</h4>
            <label>感谢 {{ user_name }} 的登陆</label>
        {% else %}
            <label>严肃的一个网站,请先登陆</label>
        {% endif %}
        <h1>循环 empty非必选,意为若列表为空</h1>
        {% for item in user_goods %}
            <label> {{ item }}条绷带</label>
        {% empty %}
            <label>完了</label>
        {% endfor %}
    </body>
  2. views
    2.1 传入字典方式

    def home_page(request):
        is_login = True
        user_name = '埃及法老'
        user_goods = range(1,11)
        page_dict = {'is_login':is_n,
        'user_name':user_name,
        'user_goods':user_goods
        }
        return render(request,'home_page.html',page_dict)

    2.2 另一种数据导入方式

        from django.template import loader
        t = loader.get_template('home_page.html')
        dicts = {'request':request,'is_login': is_login,'user_name': user_name,'user_goods': user_goods}
        return HttpResponse( t.render(dicts) )

    2.3 使用context导入数据

    def login_data_proc():
      is_login = True
      user_name = '埃及法老'
      user_goods = range(1,11)
      dicts = {'is_login': is_login,'user_name': user_name,'user_goods': user_goods}
      return dicts
    def home_page(request):
      t = loader.get_template('home_page.html')
      html = t.render(context=login_data_proc(),request=request)
      return HttpResponse(html)

字符串是否转义

  1. 安全字符串

        a_string="<br>字符串<script>666.js</script><br>!!!"
        #{{ a_string }} 对字符串中标签最终都以普通字符串输出,即中间的标签会打印到页面上。即不可执行
        #{{ a_string|safe }} 将字符串中的标签输出成为html文本,即可执行。  
  2. 段落转义,这里相当于增加了safe 即不转义直接输出到html文本

       {% autoescape off %}
       <label>安  全{{ a_string }}</label><br>
       {% endautoescape %}
  3. 父模板上的禁止转义会传递到子模板上

标签过滤

  1. 系统默认标签

        无:{{ a_string|default:"nothing" }} <br><!--nvl(a_string,"nothing") -->
        长度:{{ a_string|length}} <br><!--length(a_string) -->
        文件大小:{{ file_bytes|filesizeformat }} <br> <!--20480 -> 20.0 KB -->
        时间显示:{{ times|date:"Y-m-d" }} <br> <!--datetime->str -->
        字符串截取:{{ b_string|slice:"2:6" }} <br> <!--'1234567'[2:6] -->
        字符串截断:{{ b_string|truncatechars:5 }} <br> <!--截断字符串5-3位添加... -->
  2. 自定义标签

    2.1 setting.py INSTALL_APP中要求必须有这个app在列表里
    2.2 添加以下文件

    path:工程目录/应用目录/templatetags/__init__.py 
    path:工程目录/应用目录/templatetags/extern_tags.py    

    2.3 在extern_tags.py 下增加如下内容

    from django import template
    from django.utils.safestring import mark_safe
    
    register = template.Library()
    
    @register.filter
    def strong_str(strs):
      t_str = "<label><strong>我粗了:%s</strong></label>" % (strs,)
      return mark_safe(t_str)

    2.4 在使用它的模板下添加如下引用方式

        {% load crm_extras %}
        {{ "aaaaa"|strong_str }}

猜你喜欢

转载自blog.csdn.net/gang950502/article/details/82591622