django框架(三)-----模板的使用、模板变量、过滤器以及静态文件的引入

一、模板的使用

  • 模板的作用:调用HTML前端页面
  • 模板的存放:
    ①:在项目主目录下创建一个名为templates的目录用来存放所有的HTML模板文件
    ②:在templates目录下再创建以各个app名字命名的目录来存放各个app中的模板文件
    ③:项目目录下settings.py中的模板路径配置
    TEMPLATES = [
    	'DIR': [os.path.join(BASE_DIR, 'templates')],
    	# 当APP_DIRS为True时会到app目录下的templates中查找模板,app需先注册
    	'APP_DIRS': True,
    ]
    
  • 模板的渲染(在视图函数中)
    ① 硬编码方式:
    def index(request):
    	return HttpResponse('<h1>Hello, world!!!</h1>')
    
    ② 使用render进行渲染:
    from django.shortcuts import render
    
    def index(request):
      return render(request, 'student/index.html')
    

二、模板变量的使用

  • 使用规则:
    ① 语法:{{ 变量名 }}
    ② 命名由数字、字母、下划线组成,但不能以下划线开头,不能有空格和标点符号
    ③ 可以使用字典、方法、函数、列表,不要使用python、django的关键字进行命名
    ④ 当模板变量为一个字典时且它有items这个key时,当访问data.items时将会访问data中这个items key,而不是items方法,变量名中(’.’)表示查找
  • 案例
    ① 在views.py中
    def index(request):
      li = [1, 2, 3]
      
      def func():
          return '我是个函数'
      return render(request, 'student/index.html', context={'li': li, 'func': func})
    
    ② 在index.html中
    <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>index page</title>
      </head>
      <body>
          <p>这是一个列表:{{ li }}</p>
          <p>我是列表的第二个元素:{{ li.1 }}</p>
          <p>这是个函数:{{ func }}</p>
      </body>
      </html>
    
    ③ 浏览器中访问效果:
    在这里插入图片描述

三、过滤器的使用

  • 过滤器:对变量进行过滤,在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换原来的变量展示出来
  • 语法:{{ 变量|过滤器名称:参数 }}
    注意:使用参数的时候,冒号和参数之间不能有空格,一定要紧挨着
常用过滤器
add字符串相加,数字相加,列表相加,如果失败,将会返回一个空字符串
default提供一个默认值,只有在变量为None的时候才会使用默认值
first返回列表中的第一个值
last返回列表中的最后一个值
date格式化日期和时间
time格式化时间
join跟python中的join用法一样
length返回字符串或数组的长度
length_is字符串或者数组的长度是否为指定的值,返回True或False
lower将所有的字符串都变成小写
capfirst首字母大写
slice切割列表,前闭后开
striptags去掉所有的html标签
safe关闭变量的自动转义
floatformat浮点数格式化
date和time过滤器格式
Y四位数的年
y两位数的年
m两位数的月
n一位数的月
d两位数的日
j一位数的日
g12小时制的一位数的小时
G24小时制的一位数的小时
h12小时制的两位数的小时
H24小时制的两位数的小时
i分钟,从00-59
s秒,从00-59
  • 案例:
    ① 在views.py中:
from django.shortcuts import render
from datetime import datetime

def index(request):
    num = 5
    s = None
    li = [1, 2, 3]
    t = datetime.now()
    word = 'hello'
    html = '<h1>我是标题标签</h1>'

    return render(request, 'student/index.html', context={'li': li,
                                                          'num': num,
                                                          's': s,
                                                          't': t,
                                                          'word': word,
                                                          'html': html})

② 在index.html中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index page</title>
</head>
<body>
    <p>add过滤器:{{ num|add:3 }}</p>
    <p>default过滤器:{{ s|default:'hahaha' }}</p>
    <p>first过滤器:{{ li|first }}</p>
    <p>last过滤器:{{ li|last }}</p>
    <p>date过滤器:{{ t|date:'Y-m-d H:i:s' }}</p>
    <p>time过滤器:{{ t|time:'H:i:s' }}</p>
    <p>length过滤器:{{ li|length }}</p>
    <p>length_is过滤器:{{ li|length_is:3 }}</p>
    <p>capfirst过滤器:{{ word|capfirst }}</p>
    <p>safe过滤器:{{ html|safe }}</p>
    <p>striptags过滤器:{{ html|striptags }}</p>
</body>
</html>

③ 浏览器中访问效果
在这里插入图片描述

四、静态文件的引入

① 在项目目录下创建static的目录,再创建student app目录,然后再在其下创建js, css, images目录
在这里插入图片描述
② 在settings.py中添加如下:

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

③ 引用案例,在首页中引用index.css使p标签字体变成红色
在这里插入图片描述
在index.html中,这里用到了模板标签,模板标签在下节中会讲到

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>index page</title>
    <link rel="stylesheet" href="{% static 'student/css/index.css' %}">
</head>
<body>
	<p>你长得可真帅!!!</p>
</body>

④ 浏览器中访问效果图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值