• 模版变量、过滤器、静态文件引入


    模板路径

    模板设置
     1 TEMPLATES = [
     2     {
     3         'BACKEND': 'django.template.backends.django.DjangoTemplates',
     4         'DIRS': [os.path.join(BASE_DIR,'templates')],
     5         'APP_DIRS': True,
     6         'OPTIONS': {
     7             'context_processors': [
     8                 'django.template.context_processors.debug',
     9                 'django.template.context_processors.request',
    10                 'django.contrib.auth.context_processors.auth',
    11                 'django.contrib.messages.context_processors.messages',
    12             ],
    13         },
    14     },
    15 ]
    

     模板查找顺序:优先在DIRS设置的目录下查找templates,如果没有, 'APP_DIRS': True时,继续在注册的app文件夹下查找相应的templates。

    app注册后才能查找内部模板

     1 #app注册
     2 INSTALLED_APPS = [
     3     'teacher',  # 注册teacherAPP
     4     'django.contrib.admin',
     5     'django.contrib.auth',
     6     'django.contrib.contenttypes',
     7     'django.contrib.sessions',
     8     'django.contrib.messages',
     9     'django.contrib.staticfiles',
    10 ]
    

    模板变量

    模板变量命名:同变量命名规则,在遵循python的变量命名的规则的前提下,且不能以下划线(_)开头

     1 def test(request):
     2     # tp = get_template('teacher/index.html')
     3     # html = tp.render()
     4     # return HttpResponse(html)
     5     def num():
     6         a = 1 + 2 + 3
     7         return a
     8     time = datetime.now()
     9     li = [1,2,3]
    10     dic = {'name': 'haha', 'age': 18}
    11     tup = (1,2,3)
    12     return render(request, 'teacher/index.html',context={
    13         'li': li,
    14         'time': time,
    15         'num': num,
    16         'dic': dic,
    17         'tup': tup,
    18     })
    

     html文件:

     1 <body>
     2     <p>变量a:{{ time }}</p>
     3     <p>列表li:{{ li }}</p>
     4     <p>列表中的值:{{ li.2 }}</p>
     5     <p>函数num:{{ num }}</p>
     6     <!--调用函数时,函数不能带参数-->
     7     <!--调用函数、表达式时,会直接返回结果-->
     8     <p>字典:{{ dic }},字典中的值:{{ dic.name }}</p>
     9     <p>字典方法:{{ dic.keys }}</p>
    10     <!--当属性/方法名与键名冲突时,优先调用键名-->
    11     <p>元组:{{ tup }},值:{{ tup.1 }}</p>
    12 </body>
    13 <!--调用渲染失败是会返回空字符' '-->
    运行结果:
    变量time:Feb. 19, 2019, 3:17 p.m.
    列表li:[1, 2, 3]
    列表中的值:3
    函数num:6
    字典:{'name': 'haha', 'age': 18},字典中的值:haha
    字典方法:dict_keys(['name', 'age'])
    元组:(1, 2, 3),值:2
    

    过滤器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 浮点数格式化 不指定小数位参数,默认保留一个为小数 ​(四舍五入)

    length 返回字符串或列表的长度 ​

    length_is 判断字符串或列表长度是否指定的值,相等返回True {{ value|length_is:"4" }} ​

    lower 字符串中的字母都变小写{{ value|lower }} ​

    upper 字符串中的字母都变大写{{ value|upper }} ​

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

    title 标题化,首字母大写 {{ value|title }}

     1   {#模板变量#}
     2     <p>变量time:{{ time }}</p>
     3     <p>列表li:{{ li }}</p>
     4     <p>列表中的值:{{ li.2 }}</p>
     5     <p>函数num:{{ num }}</p>
     6     <p>字典:{{ dic }},字典中的值:{{ dic.name }}</p>
     7     <p>字典方法:{{ dic.keys }}</p>
     8     <p>元组:{{ tup }},值:{{ tup.1 }}</p>
     9     {#过滤器#}
    10     <p>add:a+b={{ a|add:b }}</p>
    11     <p>capfirst:{{ li.3|capfirst }}</p>
    12     <p>data:{{ time|date:'Y-m-d H:i:s' }}</p>
    13     <P>default:{{ hhh|default:'nothing' }}</P>
    14     <p>first:{{ li|first }}</p>
    15     <p>last:{{ li|last }}</p>
    16     <p>slice:{{ li|slice:'::-1' }}</p>
    17     <p>join:{{ li|join:'00' }}</p>
    18     <p>floatformat:{{ 3.1415926|floatformat:3 }}</p>
    19     <p>length is 4:{{ li|length_is:4 }}</p>
    20     <p>upper:{{ li.3|upper }}</p>
    21     <p>title:{{ 'this is a test'|title}}</p>
    22     <p>safe:{{ '<h1>666<h1>'|safe }}</p>
    

    静态文件引入

    (css,js,图片文件)

    路径配置:settings文件中

    # 引入文件时使用的目录
    STATIC_URL = '/my_static/'
    # 静态文件的真实目录
    STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

    文件引入:

    1、硬编码:

    <link rel="stylesheet" href="/my_static/teacher/index.css">
    

     2、模板标签:(推荐)

    <!--加载static-->
    {% load static %}
    <link rel="stylesheet" href="{% static 'teacher/css/index.css' %}">
  • 相关阅读:
    C#编写msn的源代码
    主板不支持大硬盘和新款CPU的解决办法
    Blog、IM、MSN机器人
    一些好工具
    Full Version: [插件]QQLite Andysun 修改版 2.0 Build 370
    opencv for android 编译
    IOS autorelease 错误
    lua 脚本工具V1.3
    编译OpenCV for windows
    clang 3.1 stddef.h:61 error
  • 原文地址:https://www.cnblogs.com/liubosong/p/10408342.html
Copyright © 2020-2023  润新知