美文网首页
Django 模版 Template

Django 模版 Template

作者: 别动我名字呀 | 来源:发表于2019-05-08 21:05 被阅读0次

    在之前的例子中我们的视图中返回的html几乎都是硬编码,这并不是一个好的方式,没有将html与python代码分开

    基于这些原因, 我们可以使用 Django的 模板系统 (Template System)来实现这种模式,这就是本章要具体讨论的问题。

    python的模板:HTML代码+模板语法

    1.模版语法之变量

    在 Django 模板中遍历复杂数据结构的关键是句点字符
    语法:{{var_name}}

    views.py

    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>
    

    2 模板之过滤器

    语法:{{obj|filter__name:param}}

    • default

    如果一个变量是false或者为空,使用给定的默认值。否则,使用变量的值。例如:

    {{ value|default:"nothing" }}
    
    • length

    返回值的长度。它对字符串和列表都起作用。例如:

    {{ value|length }}
    

    如果 value 是 ['a', 'b', 'c', 'd'],那么输出是 4。

    • filesizeformat

    将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)。例如:

    {{ value|filesizeformat }}
    

    如果 value 是 123456789,输出将会是 117.7 MB。

    • date

    格式化时间,如果 value=datetime.datetime.now()

    {{ value|date:"Y-m-d" }}  
    
    • slice

    如果 value="hello world"

    {{ value|slice:"2:-1" }}
    
    • truncatechars

    如果字符串字符多于指定的字符数量,那么会被截断。截断的字符串将以可翻译的省略号序列(“...”)结尾。
    参数:要截断的字符数
    例如:

    {{ value|truncatechars:``9` `}}
    
    • safe

    Django的模板中会对HTML标签和JS等语法标签进行自动转义,这样是为了安全。但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰的。为了在Django中关闭HTML的自动转义有两种方式,如果是一个单独的变量我们可以通过过滤器“|safe”的方式告诉Django这段代码是安全的不必转义。比如:

    value="<a href="">点击</a>"
    {{ value|safe}}
    

    3 模板之标签

    标签看起来像是这样的: {% tag %}。标签比变量更加复杂:一些在输出中创建文本,一些通过循环或逻辑来控制流程,一些加载其后的变量将使用到的额外信息到模版中。一些标签需要开始和结束标签 (例如{% tag %} ...标签 内容 ... {% endtag %})。

    • for标签
      遍历每一个元素:
    {% for person in person_list %}
        <p>{{ person.name }}</p>
    {% endfor %}
    

    待续…

    内容参考:Yuan先生

    相关文章

      网友评论

          本文标题:Django 模版 Template

          本文链接:https://www.haomeiwen.com/subject/yffboqtx.html