Django从0到1 --- 设计模式及模板层(未完结)

简介: 笔记

Django设计模式及模板层


传统的MVC

MVC 代表 Model-View-Controller (模式 – 视图 – 控制器) 模式


✔️ M 模型层(Model):主要用于对数据库层的封装


✔️ V 视图层(View):用于向用户展示结果 (WHAT + HOW)


✔️C 控制 (Controller):用于处理请求、获取数据、返回结果


作用:降低模块间的耦合度(解耦合)


1.png


Django的MTV模式

MTV 代表 Model-Template-View (模型–模板–视图) 模式。


✔️ M 模型层(Model)负责与数据库交互


✔️ T 模板层 (Template) 负责呈现内容到浏览器(HOW)


✔️ V 视图层 (View) 是核心,负责接收请求、获取数据、返回结果(WHAT)

2.png



模板

模板是可以根据字典数据动态变化的html网页

模板可以根据视图中传递的字典数据动态生成响应的HTML网页


模板配置

创建模板文件夹 <项目名>/templates


在settings.py 中 TEMPLATES 配置项


BACKEND:指定模板的引擎

DIRS:模板的搜索目录(可以是一个或多个)

APP_DIRS:是否要在应用中的 templates 文件夹中搜索模板文件

OPTIONS:有关模板的选项

配置项中需要修改的部分


设置 DIRS :'DIRS':[os.path.join(BASE_DIR,'templates')]


模板的变量

视图函数中可以将Python变量封装到字典中传递到模板上:

样例:

def xxx_view(request):
    dic = {
        "变量1":"值1",
        "变量2":"值2",
    }
    return render(request,"xxx.html",dic)


能传递到模板中的 数据类型

str - 字符串 int - 整型


list - 数组 tuple - 元组


dict - 字典 func - 方法


obj - 类实例化的对象


在模板(html文件 )中使用变量的语法

- {{ 变量名 }}


- {{ 变量名.index }}


- {{ 变量名.key}} (字典)


- {{ 对象.方法 }}


- {{ 函数名 }}


3.png


模板的加载方式

方法一:HttpResponse()

通过 loader 获取模板,通过HttpResponse 进行响应


在视图函数中


4.png


或者


return HttpResponse(loader.get_template('index.html').render())


方法二: render()(推荐使用)

使用 render() 直接加载并响应模板


在视图函数中:

5.png



视图层与模板层之间的交互

视图函数中可以将 Python 变量封装到字典中传递到模板

在模板中,可以使用 {{ 变量名 }} 的语法 调用视图传进来的变量

views.py


templates/test_html.html


浏览器界面


模板标签

作用:将一些服务器端的功能嵌入到模板中,例如流程控制等


标签语法:

{% 标签 %}
........
{% 结束标签 %}


if 标签

  • 语法
{% if 条件表达式1 %}
...
{% elif 条件表达式2 %}
...
{% endif %} # 结束标签


if 中使用括号不会改变优先级 而要使用嵌套的 if 实现


locals() 将当前范围内的局部变量封装成一个字典


mycal.html


6.png

配置路由(urls.py)


views.py 中 mycal.html的视图函数


如果请求是 GET 返回当前页面


如果请求是 POST 说明用户已经填好公式点击了提交,后端将用户提交的数据进行处理后返回

7.png



for标签

语法

{% for 变量 in 可迭代对象 %}
... 循环语句
{% emoty %}
... 可迭代对象无数据时填充的语句
{% endfor %}


内置变量 - forloop8.png


模板层过滤器

模板过滤器


定义


在变量输出时对变量的值进行处理


作用


可以通过使用 过滤器 来改变变量的输出显示


语法


{{ 变量 | 过滤器1:'参数值1' | 过滤器2: '参数值2' ...}}


常用过滤器

9.png




目录
相关文章
|
2月前
|
设计模式 算法 安全
设计模式——模板模式
模板方法模式、钩子方法、Spring源码AbstractApplicationContext类用到的模板方法
设计模式——模板模式
|
2月前
|
Java C++ Python
django 模板 过滤器
django 模板 过滤器
|
3月前
|
前端开发 JavaScript 数据库
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器
|
3月前
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
30 1
|
3月前
|
前端开发 Python
Django模板
【8月更文挑战第19天】
30 3
|
3月前
|
自然语言处理 前端开发 数据处理
Django的模板系统
【8月更文挑战第13天】
30 2
|
3月前
|
API Java 数据库连接
从平凡到卓越:Hibernate Criteria API 让你的数据库查询瞬间高大上,彻底告别复杂SQL!
【8月更文挑战第31天】构建复杂查询是数据库应用开发中的常见需求。Hibernate 的 Criteria API 以其强大和灵活的特点,允许开发者以面向对象的方式构建查询逻辑,同时具备 SQL 的表达力。本文将介绍 Criteria API 的基本用法并通过示例展示其实际应用。此 API 通过 API 构建查询条件而非直接编写查询语句,提高了代码的可读性和安全性。无论是简单的条件过滤还是复杂的分页和连接查询,Criteria API 均能胜任,有助于提升开发效率和应用的健壮性。
120 0
|
3月前
|
前端开发 数据处理 开发者
解锁Django模板系统终极奥义!揭秘高效前端渲染秘籍,让你的网站秒变炫酷黑科技!
【8月更文挑战第31天】Django作为Python的高级Web框架,内置的模板系统支持动态HTML渲染。本文通过在线书店案例,详细介绍Django模板系统的设置与高效渲染技巧,包括创建模板文件、编写视图函数及URL配置。通过合理使用过滤器、深度查询和模板继承等技巧,提升前端渲染效率和安全性,优化Web应用开发流程。
25 0
|
3月前
|
安全 JavaScript 前端开发
Django入门到放弃之模板及标签
Django入门到放弃之模板及标签
|
4月前
|
设计模式 算法 Java
跟着GPT学设计模式之模板模式
模板模式是一种行为型设计模式,它定义了一个操作中的算法骨架,将一些步骤的具体实现延迟到子类中。该模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
61 6