骄傲的赛亚人

day3模板-静态文件

web框架的设计模式

MVC(分层开发模式,为了代码复用):

M(model):业务模型代表一个存储数据的对象

V(view):视图用户界面代表模型数据的可视化

C(controller)控制器作用于模型和视图。它控制数据流向模型对象,并在数据变化的时候更新视图,是视图与模型解耦

MTV(django)

M:业务模型,与MVC中的M功能相同,负责和数据库交互,进行数据处理

V:视图,与MVC中的C功能相同,接受请求,进行业务处理,返回响应

T(template)模板,与MVC中V功能相同,负责构造要返回的html页面

 

模板(就是一个个html文件)

在项目根目录的setting文件里面设置模板路径 DIRS

from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent

 

 

 

为了pycharm能够自动提示,还需要把templates文件夹设置为templates folder

右击templates文件选择Make Directorys-templates folder

为了避免相同文件名的模板被覆盖,需要在templates下再创建一个以appname为名字的文件夹,再到其中创建模板文件

 

 

 

模板渲染

模板渲染的过程:读取模板文件,然后渲染,渲染之后再痛过响应返回

from django.shortcuts import reverse, render
from django.template.loader import get_template


def index(request):
    # 第一种
    # t = get_template("projects/index.html")   # 获取模板
    # html = t.render()  # 渲染模板

    # return HttpResponse(html) 返回模板
    # 第二种
    return render(request, "projects/index.html")

 

模板变量

django提供一种模板渲染的机制,在render渲染模板时,我们可以传递变量给render方法,在模板中,按照一定的语法,render方法可以将变量渲染到模板中,本质上就是字符串的格式化

def index(request):
    now = timezone.localtime().strftime("%Y-%m-%d %H:%M:%S")
    return render(request, "projects/index.html", context={"nowl": now})

 

<p>当前时间:{{ nowl }}</p>

语法

  • 在模板中,模板变量的语法:{{ 变量名 }}、{{ 变量名.属性 }}
  • 变量名由字母和数字以及下划线组成,不能以下划线开头,不能有空格,不能有标点符号
  • 不要用python和django关键字
  • 变量的值可以是python中的任意数据类型

 

 

变量解析规则

  • 当模板引擎遇到{{ 变量 }}时,他回计算该变量,并将其替换为结果
  • 当模板引擎遇到{{ 变量.属性 }}的时候,它会获取该变量对应属性,获取顺序
  •   1、字典键值查找 变量[属性]
  •   2、按照属性或者方法 变量.属性
  •   3、数字索引查找
  • 如果结果是可调用的,则调用它,不带参数。调用的结果替换模板变量

静态文件(static)

设置路径

 django项目开发是静态文件使用  'django.contrib.staticfiles' 应用,提供静态文件服务器,确保它在INSTALLED_APPS中

在更目录的setting文件设置静态文件路径

 

# 设置静态文件引用前缀
STATIC_URL = '/static/'
# 设置静态文件目录
STATICFILES_DIRS = [str(BASE_DIR / "static")]

还需要在更根目录创建static目录,再到static目录创建以app_name为名称的文件夹,然后创建css,js,imgs目录

 

静态文件引用

1、硬编码不推荐

<img src="/static/projects/imgs/tupian.png" alt="">

/static/就是上面设置的STATIC_URL的值,django会到 STATICFILES_DIRS 下面的目录的下面去找 projects/imgs/tupian.png

2、使用模板标签,推荐使用,部署方便

{% load static %}  # 在模板头部引入

<img src="{% static 'projects/imgs/tupian.png' %}" alt="">

 

posted on 2022-06-10 10:32  骄傲的赛亚人  阅读(23)  评论(0编辑  收藏  举报

导航