zoukankan      html  css  js  c++  java
  • 模板路径,模板变量,过滤器和静态文件的引用

    1、模板路径的查找

    -查找顺序
    1.优先查找settings.py 的DIRS:[os.path.join(BASE_DIR,‘templates’)]
    2.如果APP_DIRS:TRUE
    会到INSTALLED_APPS下面去找模板(从上往下找)
    如果在项目下建立templates(名字必须是这个) ,需要在INSTALLED_APPS加入项目名称

    尝试,在app目录下存放模板
    -两种方案

    -为什么要在tempaltes里面再套一层
    ** 只要找到一个符合的模板,就返回(templates下的模板优先级高,如果不套一层,模板会有覆盖)

    2.模板变量
    -静态页面,动态页面
    渲染
    -模板变量
    def render(request, template_name, context=None, content_type=None, status=None, using=None):
    render里面添加参数为context,为字典
    例如:

    render(request,'teacher/index.html',context={'now':now})

    def reverse(viewname, urlconf=None, args=None, kwargs=None, current_app=None):
    reverse里面添加的kwargs,为字典
    例如:

    reverse('teacher:detail',kwargs={'pk':12})

    - 语法
    *** 不能以下划线开头

    **变量的值可以是任何数据类型
    -变量的解析规则
    各种尝试
    py文件:

    now = datetime.now()
    lt = [1,2,3]
    html ="<h1>我是安全的</h1>"
    def func(): return 'aaaa' dt = {'name':'aaa','age':18} return render(request,'teacher/index.html', context={'now':now, 'lt':lt, 'fun':func, 'dt':dt,
    'html':html })

    html文件:

    <h1>我是teacher首页</h1>
    <h2>当前时间 {{ now }}</h2>
    <h2>返回列表 {{ lt }}</h2>
    <h2>返回列表的第二个值 {{ lt.1 }}</h2>  
    <h2>返回一个函数的返回值 {{ fun }}</h2>
    <h2>返回一个字典 {{ dt }}</h2>
    <h2>返回一个字典的值 {{ dt.name }}</h2>
    <h2>返回一个安全标题 {{ html|safe }}</h2>
    <h2>返回一个字典的方法 {{ dt.items }}</h2> #(如果dt字典中有items属性值时,返回对应的value)

    1.计算变量,将其替换为结果
    2.遇到点(.)的时候,按一下顺序查找:
      -1.字典键值查找
      -2.属性或方法查找
      -3.数字索引查找
    3.如果结果是可调用的,则调用它时不带参数。调用的结果成为模板的值
    ## 所谓的结果是可调用的,说明变量是个函数,或是个方法

    ** 渲染失败返回''

    3.模板过滤器 filter
    -常用模板过滤器
    add 将参数与值相加 首先尝试转换成整数相加,失败,则尝试所有可能,字符串,列表等。{{ value|add:"2" }}
    capfirst 首字母大写,如果第一个字母不是字母则不起作用。{{ value|capfirst }}
    date 日期格式化 {{ value|date:"D d M Y" }}
    time 时间格式化 {{ value|time:"H:i" }} 格式化格式见官方文档:https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#date
    default 如果变量解析失败,使用给定的默认值。{{ value|default:"nothing" }}(注意如果value是''空字符串,输出将会是'nothing')
    first 返回列表的第一个元素 {{ value|first }}
    last 返回列表的最有一个元素 {{ value|last }}
    slice 返回一个列表的切片 {{ some_list|slice:":2" }}
    join 连接字符串列表 与str.join(list)一样 {{ value|join:" // " }}
    floatformat 浮点数格式化 不指定小数位参数,默认保留一个为小数
    value Template Output
    34.23234 {{ value|floatformat }} 34.2
    34.23234 {{ value|floatformat:3 }} 34.232
    length 返回字符串或列表的长度
    length_is 判断字符串或列表长度是否指定的值,相等返回True {{ value|length_is:"4" }}
    lower 字符串中的字母都变小写{{ value|lower }}
    upper 字符串中的字母都变大写{{ value|upper }}
    safe 关闭变量的自动转义,使html标签生效{{ value|safe }}
    title 标题化,首字母大写 {{ value|title }}

    -xss(跨域脚本攻击)

      safe 关闭变量的自动转义,使html标签生效{{ value|safe }}

    4.静态文件
    -css
    -js
    -图片
    -1. 路径配置,首先在app里面查找static.首先在settings.py中进行设置。然后在项目目录下创建static.
    - STATICFILES_DIRS

    STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

    - STATIC_URL

    STATIC_URL = '/static/'

    -2. 静态文件的引入,在对应的html代码中导入,使用相应的静态文件。

    -1. 硬编码 通过 STATIC_URL  (不推荐)
    -2. 模板标签

    {% load static %}
    
    <link href="{% static 'teacher/css/dashboard.css' %}" rel="stylesheet">

    需要页面可以去bootstrap里面套用:http://www.bootcss.com/

  • 相关阅读:
    【Java】使用记事本运行第一个Java程序
    构建自己的PHP框架(日志)
    构建自己的PHP框架(Twig模板引擎)
    使用openssl工具生成密钥
    构建自己的PHP框架(Redis)
    构建自己的PHP框架(邮件发送)
    树莓记录
    两张图证明 WolframAlpha 的强大
    树莓3B+_Raspbian 源使用帮助
    树莓3B+_安装vim
  • 原文地址:https://www.cnblogs.com/taoge188/p/10585167.html
Copyright © 2011-2022 走看看