模板的使用
基本使用方法
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>
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)
字符串是否转义
安全字符串
a_string="<br>字符串<script>666.js</script><br>!!!" #{{ a_string }} 对字符串中标签最终都以普通字符串输出,即中间的标签会打印到页面上。即不可执行 #{{ a_string|safe }} 将字符串中的标签输出成为html文本,即可执行。
段落转义,这里相当于增加了safe 即不转义直接输出到html文本
{% autoescape off %} <label>安 全{{ a_string }}</label><br> {% endautoescape %}
- 父模板上的禁止转义会传递到子模板上
标签过滤
系统默认标签
无:{{ 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.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 }}