Django 中模板的变量,标签,过滤器和静态文件加载

模板的语法

1、变量

  • 作用:允许将后端的数据传递给模板(HTML),在模板中,会根据变量的实际值进行显示
  • 在Django中允许传递给模板作为变量的数据类型有数字,字符串,列表,元组,字典,函数,对象
  • 传递变量到模板
    • 1、render:
    from django.shortcuts import render
    
    def viewsname(request):
    	dic = {
    			"变量1":"值1",
    			"变量2":"值2",
    		  }
    	return render(request, 'temp.html', dic)
    
    • 2、loader:
    from django.shortcuts import render
    from django.http import HttpResponse
    from django.template import loader
    
    def viewsname(request):
    	dic = {
    			"变量1":"值1",
    			"变量2":"值2",
    		  }
    	t = loader.get_template('temp.html')
    	html = t.render(dic)
    	return HttpResponse(html)
    
  • 在模板中获取变量值 {{ 变量名 }}

2、标签

  • 作用:允许嵌套一些服务器端的逻辑运算到模板中
  • 语法 {% …%}
  • 常用标签(if判断)
    • 1、{% if 条件表达式 %}…… {% endif %} 注意可以用not,and和or,但是and和or不能同时出现
    • 2、{% if 条件表达式 %}…… {% else %}……{% endif %} 等值判断或区间判断
    • 3、{% ifequal 条件表达式 %}…… {% endifequal %} 等值判断
    • 4、{% ifequal 条件表达式 %}……{% else %}…… {% endifequal %} 等值判断
    def rockets_views(request, num):
        name1 = "MD"
        name2 = "YM"
        sex = 0
        return render(request, "rockets.html", locals()) # locals() 将上述的局部变量变成字典
    
    <body>
        <h1>球员1:
            {% if name1 == "MD" %}
                麦迪
            {% endif %}
            {% ifequal sex 1 %}
                <span></span>
            {% else %}
            	<span></span>
            {% endifequal %}
        </h1>
        <h1>球员2:
            {% ifequal name2 "YM" %}
                姚明
            {% endifequal %}
            {% ifequal sex 1 %}
                <span></span>
            {% else %}
            	<span></span>
            {% endifequal %}
        </h1>
    </body>
    
  • 常用标签(for循环)
    • 用法1:{% for 变量 in 列表|元组 %}……{% endfor %}
    • 用法2:{% for 变量1,变量2 in 字典 %}……{% endfor %}
    • 可以使用的内部变量forloop(无需声明)
      • forloop.counter:记录循环的次数
      • forloop.counter0:同上,从0开始
      • forloop.revcounter:记录未被遍历的数量
      • forloop.revcounter0:同上,从0开始
      • forloop.first:布尔值,标记是否为第一个元素
      • forloop.lasr:布尔值,标记是否为最后一个

3、过滤器

  • 作用:在显示变量之前,允许对数据进行筛选或改变
  • 语法:{{ 变量 | 过滤器 }}
  • 常用过滤器
    • 1、{{ var | upper }} 将变量的数据变成大写
    • 2、{{ var | lower}} 将变量的数据变成小写
    • 3、{{ var | add:num}} 将变量的值加 num
    • 4、{{ var | floatformat :n }} 将变量四舍五入到n为小数

参考文档: Django的文档.

4、静态文件处理

  • 模板中所用到的css,js,image等一些资源文件都是静态文件
  • Django中静态文件的处理
    • 第一步:在settings文件中设置静态文件的访问路径和存储路径
      • STATIC_URL:指定静态资源的访问路径
      • STATICFILES_DIRS:指定在开发阶段所用静态文件所在的根目录
     STATIC_URL = '/static/'  # 指定静态资源的访问路径,一般不改
     # localhost:8000/static/…… 都会找静态文件
     
     STATICFILES_DIRS = (BASE_DIR, 'static') # 指定静态资源存放根目录,一般写死
     # BASR_DIR:项目的绝对路径
     # 'static':把所有应用中的static文件夹都作为静态资源的存放路径,加载资源时,会搜索全部应用的static文件夹
    
    • 第二步:访问静态资源 (方式一)使用静态路径
      • 在应用中创建static文件夹,再在static文件夹中创建css,js,images等文件夹
      • 在模板中采用文件路径的方式引入静态文件
     <img src="/static/image/abc.jpg">   <!-- 通过静态路径的方式引入静态文件-->
     <!-- 当 静态访问路径 (STATIC_URL='/static/') 发生变动时,要手动修改静态路径-->
    
    • 访问静态资源 (方式二)使用动态路径
      • 在模板文件的顶部增加{% load static %}
      • 加载路径为:src="{% static ‘path’ %}"
    {% load static %}
     <img src="{% static 'image/abc' %}">   <!-- 通过动态路径的方式引入静态文件-->
     <!-- 当 静态访问路径 (STATIC_URL='/static/') 发生变动时,无需修改静态资源加载路径-->
    
发布了75 篇原创文章 · 获赞 87 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_43883022/article/details/89671466