Django-前期初识
目录
-Web框架本质
Web框架本质上可以看成是一个功能强大的socket服务端,用户的浏览器可以看成是拥有可视化界面的socket客户端。两者通过网络请求实现数据交互,我们也可以从架构层面上先简单的将Web框架看做是对前端、数据库的全方位整合。
-python主流Web框架
--组成通式
socket部分(A),路由与视图函数匹配关系(B),模板语法(C)
--Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,视图V和模版T。几乎囊括了 Web 应用的方方面面,可以用于快速搭建高性能、优雅的网站
特点:大而全,自带功能特别多
不足:笨重,在一些小型项目开发上用不到所有功能
组成:A用的wsgiref,B用的自己的,C用的自己的
--Flask
Flask 是一个轻量级的基于 Python 的 Web 框架,简单易用,适合快速开发,封装功能不及Django完善,性能不及Tornado
特点:小但精,自带功能少,但支持的第三方模块多
不足:比较依赖第三方开发者
组成:A用的werkzeug,B自己写的,C用的jinja2
--Tornado
一个用Python语言写成的Web服务器兼Web应用框架,轻量级的Web框架,拥有异步非阻塞IO的处理方式
特点:异步非阻塞,注重性能优越,速度快
不足:模板和数据库部分不利于封装为一个功能模块,暂时不好学
组成:A、B、C都是自己写的
--fastapi、sanic等其它
-模板语法
模版语法可以将后端的内容传递给HTML页面,实现前端数据的动态展现,十分方便
一般在web开发中用于实现前后端交互
--jinja2初识
---简介
jinja2是当下一个比较好用的模板语法
jinja2(欢迎来到 Jinja2 — Jinja2 2.7 documentation (jinkan.org))是Flask作者开发的一个模板系统,起初是仿django模板的一个模板引擎,为Flask提供模板支持,由于其灵活,快速和安全等优点被广泛使用。
---安装
jinja2在python中是第三方模块,使用前应安装
1 pip3 install jinja2
---基本语法
{% %} 逻辑相关 {{ }} 变量相关 {# #} 注释
---样例使用
views.py
from jinja2 import Template def index(request): user_dict = {'name': 'weer', 'age': 18, 'hobby': 'python'} num_list = [111, 222, 333] with open(r'index.html', 'r', encoding='utf-8') as f: data = f.read() temp_obj = Template(data) res = temp_obj.render({'user':user_dict,'num_list':num_list}) return res
index.html
<h1>字典数据</h1> <p>{{ user }}</p> <p>{{ user.name }}</p> <p>{{ user['age'] }}</p> <p>{{ user.get('hobby') }}</p> <h1>列表数据</h1> <p> {% for i in num_list%} <span>number:{{ i }}</span> {% endfor %} </p>
-静、动态网页
--静态网页
页面是死的,不改不变
在网站设计中,静态网页是标准的 HTML 文件,它的文件扩展名是 .htm、.html,可以包含文本、图像、声音、FLASH 动画、客户端脚本和 ActiveX 控件等。
特点:
- 静态网页不能自动更新,若要更新则需重新编写 HTML 源文件,然后再上传
- 静态网页的内容不随浏览用户、浏览时间等条件的变化而变化
- 静态网页无论浏览者浏览与否都是真实存在的一个文件,都对应一个 URL
- 静态网页实现人机交互有较大的局限性
- 加载速度更快,所以有“伪静态网页”的使用
--动态网页
数据是实时获取的
动态网页的网页文件中除了HTML标记以外,还包括一些特定功能的程序代码,这些代码可以使得浏览器和服务器可以交互,所以服务器端根据客户的不同请求动态的生成网页内容。
特点:
- 动态网页在服务器端运行,客户机上看到的只是它的返回结果,不可能看到它的源文件
- 不同的人、不同时间、不同地点浏览同一个动态网页返回不同的内容。
- 动态网页本身并不是一个独立存在于服务器的网页文件
- 动态网页更容易实现人机交互
- 动态网页构建的网站维护起来容易