美文网首页Python
Django - template

Django - template

作者: 1ce12508ed0c | 来源:发表于2018-12-20 11:24 被阅读33次

    template 模板

    1. 模板语言 if 、 for 、 jquery
    2. 模板继承

    成对出现 if ,for

    if    
    {if ...}
    {endif}
    
    for 
    {for i in ..}
    {endfor}
    
    {% load staticfiles %}    #载入静态配置文件,这里只是路径
    

    在 setings.py
    STATIC_URL = '/static/' #这里可以改

    语法格式: {{obj|filter:param}}

    1  add              :   给变量加上相应的值
       
    2  addslashes       :    给变量中的引号前加上斜线
      
    3  capfirst         :    首字母大写
       
    4  cut              :   从字符串中移除指定的字符
       
    5  date             :   格式化日期字符串
       
    6  default          :   如果值是False,就替换成设置的默认值,否则就是用本来的值
       
    7  default_if_none  :  如果值是None,就替换成设置的默认值,否则就使用本来的值
    

    实例:

    value1="aBcDe"
    {{ value1|upper }}<br>
    
    value2=5
    {{ value2|add:3 }}<br>
    
    value3='he  llo wo r ld'
    {{ value3|cut:' ' }}<br>
    
    import datetime
    value4=datetime.datetime.now()
    {{ value4|date:'Y-m-d' }}<br>
    
    value5=[]
    {{ value5|default:'空的' }}<br>
    
    value6='<a href="#">跳转</a>'
    
    {{ value6 }}
    
    {% autoescape off %}
      {{ value6 }}
    {% endautoescape %}
    
    {{ value6|safe }}<br>
    
    {{ value6|striptags }}
    
    value7='1234'
    {{ value7|filesizeformat }}<br>
    {{ value7|first }}<br>
    {{ value7|length }}<br>
    {{ value7|slice:":-1" }}<br>
    
    value8='http://www.baidu.com/?a=1&b=3'
    {{ value8|urlencode }}<br>
        value9='hello I am yuan'
    

    我的template

    <!DOCTYPE html>
    {% load staticfiles %}         #这里载入jQuery ,在setings.py里面设置
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>hc</title>
        <script src="{% static 'jquery-3.3.1.min.js' %}"></script>     #在指定位置载入
    </head>
    <body>
        <h1> user meagess</h1>
        {% for item in obj_sqlite %}
            <div>
            <span>{{ item.username | upper}}</span>  
                                # '|'类似管道付,后面写的是一个方法、 upper:全部大写
            <span>{{ item.password | add:100}}</span> 
                                # add:100  是把前面的值增加100.前面的变量必须是数值
             <p></p>
            </div>
        {% endfor %}
        {{ abc }}
        <br>
        {{ abc | cut:' ' }}    # 使用了cut 移除指定的字符
        <br>
        {{ d }}
        <br>
        {{  d | date:'Y - m - d' }}   # 使用了date  把后端输出的时间格式化到前端
    </body>
    </html>
    

    引入时间函数,才能调用。

    import datetime
    d = datetime.datetime.now()   #  .now()  为当前的时间
    
    Dec. 17, 2018, 4:46 p.m. 
    

    模板继承

    在 template 里面定义
    base.html
    总的页面。所用子页面继承他的内容

    <div>
        {% block content %}
    
         #这里是你需要的页面
    
        {% endblock %}
    </div>
    
    
    login.html   #子页面 里面写该页面需要的内容
    {% extends 'base.html' %}
    {% block content %}
        #你需要的内容 
    {% endblock %}
    
    

    simple_tag
    当django的原生方法不够用时, 我可以自定方法来使用 这就是simple_tag

    首先创建包 必须是 templatetags 这个名字
    在这个包下创建一个py文件。名字可以自定义

    创建了一个 my_tag.py 文件

    my_tag.py

    from django.template improt Library    #首先导入模块 固定导入
    
    register = Library()      #这个实例化的对象必须叫 register 
    
    @register.filter          # filter 方法只能传递两个参数。 这里就是装饰器了
    def filter_func(x , y):   #.filter  方法只能传递两个参数,多了就不行
         return x+y
    
    
    @register.simple_tag          # simple_tag 它可以接收多个参数
    def simple_func(t,a,b,c):     # .simple_tag  方法 可以传递多个参数 
    
        return '2018-12-17'
    

    这项目的名字 一定要再 setings.py 里面的 INSTALLED_APPS 里面

    还有就是再html 里面去定义引用

    {% load my_tag %}    
        #要再template 里去引入这个我创建的 my_tag.py 文件 
    
    {{ test|filter_func:'123' }}   
        #  传入两个参数,这里用来拼接,因为上面的函数定义了 return x+y
        # test 当成第一个参数,'123' 当成第二个参数,传入 filter_func 这个方法里
    
    {{ simple_func 't' 'a' 'b' 'c' }}   
        # 这里传入什么值 都return一个固定值,因为我方法里是这样定义了
    

    simple_tag
    总结一下

    1. 创建包必须的名字必须是 'templatetags' 这个名字

    2. 导入这个模块,Library模块是装饰器 'from django.template improt Library'

    3. 这个实例化的对象必须叫 'register' --> register = Library()

    4. 这项目的名字一定要再 setings.py 的 INSTALLED_APPS 里 有定义这个项目名

    5. 在template里面需要引用 写好的.py文件 '{% load my_tag %} '

    .

    相关文章

      网友评论

        本文标题:Django - template

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