zoukankan      html  css  js  c++  java
  • Day062--django--模板,母版和继承

    1.MVC和MTV

    1. MVC
    2. C Controller : 逻辑的控制
    3. M Model : 存取数据
    4. V View : 信息的展示
    5. MTV
      1. M : model ORM操作
      2. T: Template 模板
      3. V: View 业务逻辑

    2.变量

    {{ 变量 }} 使用.来获相关属性和方法

    标签 {% %}

    3.过滤器

    语法: {{ value|filter_name:参数 }} # 参数最多只有一个

    1. 内置过滤器

      1. default 提供默认值
        '|'左右没有空格没有空格没有空格
        {{ kong|default:'nothing' }}

      2. date 日期格式化
        {{ now|date:'Y-m-d H:i:s' }}

        settings中可配置全局的日期时间格式化
        USE_L10N = False
        DATETIME_FORMAT = 'Y-m-d H:i:s'
        
      3. safe 不进行转义
        {{ js|safe }} # 告诉Django 前面的内容是安全的,不必转义

      4. # 设置默认值
        # 未定义的变量
        {{ qwe|default:'nothing' }} # nothing
        # 空列表
        {{ empty|default:'nothing'}} # nothing
        
        # 或者在配置文件中全局配置设置默认值
        settings-->TEMPLATES-->OPTIONS-->和'context_processors'同级增加
        'string_if_invalid':'找不到'
            此优先级比在变量中设置default高, 但是[]空列表不在此范畴,只适用于default
            
         
        # filesizeformat 文件大小单位转换
        # 将值格式化为一个 “人类可读的” 文件尺寸 (例如 '13 KB', '4.1 MB', '102 bytes', 等等)
        {{ value|filesizeformat }}
        
        # add  相加,拼接
        # 可以将'1'转化成数字进行相加. 若字符串无法转数字,则进行拼接. 如果是两个列表,可以合并成1个列表
        {{ num|add:'1' }}
        {{ lst|add:lst2 }}
        
        # length 显示长度
        {{ lst|length }}
        {{ string|length }}
        {{ lst|add:lst2|length }}
        
        # slice  切片
        {{ lst|slice:'1:4:2' }}
        {{ lst|slice:'-1:-4:-2' }}
        {{ lst|first }}
        {{ lst|last }}
        # 截断
        {{ long_str|truncatechars:9 }} 
        只显示9个字符,其中包括...占3位, 也就是6个字符,剩下的内容用...表示省略
        
    2. 自定义filter

      1. 定义
        1. 在APP下创建一个叫templatetags的python包; 不能变的,必须是包,名字必须是templatetags

        2. 在包中创建一个py文件 my_filters;

        3. 在py文件中写代码
          from django import template

          register = template.Library()  # register的名字不能改
          
        4. 写函数
          @register.filter
          def add_dsb(value, arg):
          return "{}_{}".format(value, arg)

        5. 给定义的函数加装饰器
          @register.filter
          def add_dsb(value, arg):

      2. 使用
        在模板中使用:
        1. 导入定义的文件
          {% load my_filter %}
        2. 使用过滤器
          {{ name|add_dsb:'very_dsb' }}

    4.标签

    {% csrf_token %}
    
    添加在form表单中   就可以提交POST请求
    

    5.母版和继承

    1. 母版
      就是一个普通的HTML文本,将多个页面公共部分的内容提取出来,在页面中定义多个block块
      {% block content %}
      {% endblock %}
      1. 继承
        在子页面中,继承母版 {% extends 'base.html' %}
        可以重新书写block块中内容
      2. 注意事项
      3. {% extends 'base.html' %} 写在第一行,上面不写内容
        
      4. 要修改的 内容写在block块中,写在外面不显示
      5. {% extends 'base.html' %} base.html 记得带上引号,不然当做变量去查找
      6. 定义多个block块,一般要定义上 css和js

    6.组件

    把多个页面公用的HTML代码放在一个HTML文件中    —— 》组件  nav.html
    
    使用:  {% include  ‘nav.html’  %}
    

    7.静态文件相关

    {% load static %}

    {% static '静态文件相对路径' %} ——》 获取到别名,跟后面的参数进行拼接

    {% get_static_prefix %} ——》 获取到别名

    <link rel="stylesheet" href="{% get_static_prefix %}plugins/bootstrap-3.3.7/css/bootstrap.css">
    

    8.自定义inclusion_tag

  • 相关阅读:
    网页鼠标点击特效
    ElementUI 删除 el-table 当前选中行(不是selection列)
    Vue阻止冒泡
    Vue实现选项卡切换
    Vue的条件渲染
    Vue实现勾选后向数组都添加
    Vue实现商城里面多个商品计算,全选,删除
    VUE实现请求数据
    JS实现数组每次只显示5条数据
    移动端分享到微信和QQ
  • 原文地址:https://www.cnblogs.com/surasun/p/10061302.html
Copyright © 2011-2022 走看看