美文网首页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