模板文件和静态文件
模板文件和静态文件是在 web 开发中常用的两种资源文件,用于构建网站和 web 应用。
- 模板文件:模板文件是用于定义网页结构和内容的文件。
- 它们通常使用模板引擎(例如Jinja2或Django模板)来插入动态数据,并控制流程和逻辑。模板文件允许我们根据需要生成不同内容的网页。
- 静态文件:静态文件是指在web应用中不需要经常改变的资源文件,例如CSS样式表、JavaScript脚本、图像和字体文件。
- 这些文件被直接加载到网页中,用于定义网页的外观和行为。静态文件主要负责网页的静态内容。
简单的来说:
- 模板文件用于动态生成网页内容,
- 静态文件用于定义网页的静态外观和行为。
【一】动态页面和静态页面
【1】静态页面
定义:
静态页面是在服务器上预先生成并且保存为静态文件的页面,内容在服务器上不会发生变化。
特定:
-
内容固定:死页面所有的数据都是固定不变的
- 404页面
-
加载速度快:由于静态页面不需要进行动态内容的处理和数据库查询,通常加载速度较快。
-
使用范围:静态页面适用于相对固定、不需要频繁跟新的情况。例如:游戏的介绍,公司的海报
-
缓存友好:由于内容不变,静态页面可以被浏览器和代理服务器缓存,提高页面加载速度和性能。
【2】动态页面
定义:
动态页面是根据特定的参数或条件在每次请求时生成内容的页面,内容是动态生成的。
- 动态的渲染数据
- 页面信息是实时更新的
- 数据交互:动态页面通常涉及到与其他数据源的交互,以获取动态数据并进行相应的处理。
- 加载数据较慢
- 使用范围:贴吧、淘宝
注意:
静态页面和动态页面并不是绝对的概念,而是相对的。即使页面是动态生成的,但如果页面内容在一段时间内保持不变,可以将其缓存为静态文件,以提高性能。同样地,即使页面是静态的,但如果通过JavaScript等技术动态地修改页面内容,也可以实现某种程度的动态效果。
总结:
- 静态网页适合用于内容较少且不需要频繁更新的场景,如关于我们、联系我们等基础介绍页面。
- 动态网页则更适用于需要实时交互、内容丰富且需要定期更新的场景,如新闻资讯、在线购物平台等,通过服务器端的动态处理,提供了更好的用户体验和更高的业务复杂性处理能力。
【二】jianjia2语法
【1】功能
- 支持将数据传递到html页面并提供近似于后端的处理方式简单快捷的操作数据
【三】网络框架和MVC架构以及MVT框架
MVC
Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器©和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示
网络框架
- 网络架构其实就是人家帮我们封装好底层源码调用后的框架
MVC框架
M:model.py 就是和数据库打交道用的,创建表等操作
V:View 视图(视图函数,html文件)
C:controller 控制器(其实就是我百度云代码里面那个urls文件里面的内 容,url(路径)分发与视图函数的逻辑处理)
MVT框架
MVT是一种用于构建Web应用程序的架构模式:
- M(Model):负责处理数据的存储和操作。在Model中定义了数据结构和与数据库的交互方式。
- V(View):负责处理业务逻辑和用户请求。视图函数从Model中获取数据,并根据业务需求对数据进行处理,然后将结果传递给Template进行渲染。
- T(Template):负责呈现最终的用户界面。开发人员使用模板语言在Template中编写HTML代码,通过与View交互,将动态数据嵌入到静态页面中,最终生成用户所看到的网页。
MVT是Django框架的设计核心设计思想,它将数据、业务逻辑和用户界面分离,使得开发人员可以更好地组织和管理项目中的不同部分。
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:
【四】python后端框架
【1】Django框架
- Django框架比较完整并且大
- 大而全
- 笨重
【2】flask框架
- 小而精
- 依赖于第三方模块
【3】Tornado框架
- 速度比较快
- 游戏服务器上
【4】fastapi框架
- 支持异步,比较快
- 内置了很多高级的功能
【五】Djingo的基本配置
-
终端命令:django-admin startproject sitename (在当前目录下创建一个Django程序)
-
IDE创建Django程序时,本质上都是自动执行上述命令
其他常用命令:
- python manage.py runserver ip:port (启动服务器,默认ip和端口为http://127.0.0.1:8000/)
- python manage.py startapp appname (新建 app)
- python manage.py syncdb (同步数据库命令,Django 1.7及以上版本需要用以下的命令)
- python manage.py makemigrations (显示并记录所有数据的改动)
- python manage.py migrate (将改动更新到数据库)
- python manage.py createsuperuser (创建超级管理员)
- python manage.py dbshell (数据库命令行)
- python manage.py (查看命令列表)
Django框架的核心思想
总结
- “快速开发和高可维护性”。
Django致力于提供一种高效的方式来构建Web应用程序,通过以下几个方面体现其核心思想:
- DRY(Don’t Repeat Yourself)原则:Django鼓励开发人员遵循DRY原则,尽量减少重复的代码。通过提供ORM(对象关系映射)等工具,避免编写重复的数据库访问代码。
- MTV设计模式:Django采用MTV(Model-Template-View)设计模式,将数据处理(Model)、模板(Template)和视图逻辑(View)清晰地分离,以提高代码的可维护性和可扩展性。
- 自动化流程:Django提供了自动化的管理工具,包括自动生成Admin后台、自动生成数据库迁移脚本等,简化了开发人员的工作流程。
- 安全性和可扩展性:Django内置了一些安全机制,如CSRF保护、XSS防护等,并提供了丰富的扩展插件和第三方应用程序,使开发人员能够快速构建功能强大的应用程序。
综上所述,Django框架的核心思想是通过提供高效的工具和规范,使开发人员能够快速构建高质量、可维护的Web应用程序。
什么是DRY原则
是一种软件开发中的一个重要的原则
- 避免重复:不要在代码中重复相同的信息或逻辑,而应该将其抽象出来,以便在需要时进行重用。
- 单一权威:系统中特定的信息或逻辑只应该存在一个地方,这样可以避免对系统进行多处修改。
【六】Python框架官网
- Django框架官网:https://www.djangoproject.com/
- Flask框架官网:https://flask.palletsprojects.com/en/3.0.x/
- Fastapi框架官网:https://fastapi.tiangolo.com/
- Pyramind框架官网:https://trypyramid.com/
- Tornado框架官网:https://www.tornadoweb.org/en/stable/
- Sanic框架官网:https://github.com/sanic-org/sanic
- Fastapi框架官网:https://fastapi.tiangolo.com/
- Aiohttp框架官网:https://docs.aiohttp.org/en/stable/
【七】Django框架下载
【1】pip安装
python自带的第三方库
# pip install django==3.2.12
# pip install django # 默认是最新版本
- 在你的Python解释器安装目录下的 Scripts 文件夹下 会出现一个
django-admin.exe
的文件
【2】如何校验是否安装成功!
# django-admin
# django-admin --version # 查看Django版本
【3】在终端创建Django项目
【1】创建Django项目
(1)语法
django-admin startproject 项目名
(2)示例
- 在指定文件下启动终端
django-admin startproject mysite
- 终端无显示内容
- 查看当前文件夹下内容,会发现多了一个文件夹,文件夹下有很多对应的文件
【2】启动Django项目
(1)语法
python manage.py runserver [IP:PORT]
- IP和PORT可选,默认是本地的 127.0.0.1:8000
(2)示例
- 进入到创建好的文件目录下
- 注意这个文件目录是你当前目录下有 manage.py 文件才行
python manage.py runserver
- 访问底下提示的链接地址
- http://127.0.0.1:8000/
【3】创建APP
【1】语法
python manage.py startapp 应用名
- 应用名一般为英文
【2】示例
- 同上,在当前 manage.py 所在终端目录下
python3 manage.py startapp app01
# 上面命令不生效,试试 python3 能不能进入到python解释器,如果不能,换下面的试试
python manage.py startapp app01
- 查看当前文件夹下会发现多了一个 app01 文件夹
【3】注册APP
- 创建APP后,如果想使用相关的功能,必须将创建的APP注册到配置文件中
- 即在settings中加入下述内容
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 找到对应的配置内容中,加入当前新创建的APP的名字
'app01'
]
【4】用Pycharm创建Django项目
第一步
创建完成之后会在本地文件中出现如下:
第二步
第三步
# 运行Django
# python manage.py runserver
【补充】Django项目文件介绍
【1】Django空项目
├── Django项目名 # 整体项目名
├── db.sqlite3 # Django默认的db数据库,sqlite3
├── manage.py # Django的服务控制文件,所有的Django命令都是基于manage.py 来执行的
└── mysite # 项目名
├── __init__.py # 包初始化文件
├── __pycache__ # 缓存编译后的模块代码,加快加载速度
│ ├── __init__.cpython-310.pyc # 编译后的文件
│ ├── settings.cpython-310.pyc # 编译后的文件
│ ├── urls.cpython-310.pyc # 编译后的文件
│ └── wsgi.cpython-310.pyc # 编译后的文件
├── asgi.py # 支持异步请求处理的应用程序接口
├── settings.py # 配置文件
├── urls.py # 实现URL路由规则
└── wsgi.py # Django项目的入口点,将HTTP请求传递给WSGI容器,以启动Django服务器。
-
Django项目名
- 这是您为该项目创建时指定的名称,比如 “mysite”。
- 每个Django项目都有一个唯一的名称,并且在整个项目目录下作为顶级目录存在。
-
db.sqlite3
- 这是Django默认使用的SQLite数据库文件。
- SQLite是一个轻量级的关系型数据库管理系统,无需服务器运行,所有数据存储在一个文件中。
- 在这个项目中,SQLite被用作开发阶段的数据存储和本地测试环境的默认选项。
-
manage.py
- 这是Django的核心服务控制脚本,包含了各种用于管理和维护项目、应用程序以及运行Django服务器的内置命令。
- 通过
manage.py
,您可以执行如创建数据库、迁移模型、创建超级用户、运行开发服务器等操作。
-
mysite
-
__init__.py
- 这是一个空的Python模块文件,它告诉Python这是一个包含其他模块或包的目录。
- 尽管对于Django项目来说,这通常不是必需的,但在一些情况下可能会用到。
-
__pycache__
- Python会在此目录下缓存编译后的模块代码,以便加快后续加载速度。
- 这些目录通常不应该直接修改或删除,而是由Python自动处理。
__init__.cpython-310.pyc
: 编译后的初始化模块。settings.cpython-310.pyc
,urls.cpython-310.pyc
,wsgi.cpython-310.pyc
: 分别对应于settings.py、urls.py和wsgi.py这三个文件的编译版本。
-
asgi.py
- 在Django 3.0及更高版本中,此文件允许将项目配置为ASGI应用(Asynchronous Server Gateway Interface),即支持异步请求处理的应用程序接口,适用于生产环境中部署长连接或WebSocket服务。
-
settings.py
- 项目级别的设置文件,定义了诸如数据库连接、认证方式、中间件列表、静态文件托管、邮件配置等各种全局设置,以及其他项目自定义配置信息。
-
urls.py
- 应用程序级别的URL配置文件,定义了项目内各个视图函数与URL模式之间的映射关系,实现了URL路由规则。
-
wsgi.py
- Web Server Gateway Interface (WSGI) 实现文件,是Django项目的入口点,将HTTP请求传递给WSGI容器(如uWSGI, Gunicorn, uWSGI等)以启动Django服务器。
- 在早期版本中,Django项目可能只有一个根WSGI应用;而在现代Django项目中,可能涉及多个WSGI应用组合。
-
【2】APP项目
└── app01 # APP 名字
├── __init__.py # 包初始化文件
├── admin.py # 注册管理后台界面中的模型
├── apps.py # 定义当前app相关的信息
├── migrations # 模型相关的数据迁移历史记录文件
│ └── __init__.py # 包初始化文件
├── models.py # 数据库模型
├── tests.py # 用于编写单元测试
└── views.py # 主要逻辑处理模块,负责接收 HTTP 请求并返回响应
- app1 是一个名为 “app01” 的Django应用程序目录,它遵循Django应用组织的标准结构,用于组织可重用的功能模块。
__init__.py
- 此文件是空的,但它表明当前目录 “app01” 是一个Python包,里面包含其他子模块或文件。
- admin.py
- 如果您的 “app01” 应用需要注册管理后台界面(Admin Site)中的模型,则应在该文件中编写自定义的ModelAdmin类,以便管理和编辑数据库表中的记录。
- 如果没有特定需求,可以保持为空或者注释掉。
- apps.py
- 此文件定义了 “app01” 应用本身,包括应用的元数据(如名称、路径等)、是否启用该应用,以及与其他应用的关系(如有依赖)。
- migrations
- 存储与 “app01” 模型相关的数据迁移历史记录文件(
.py
)和应用状态文件(.pyc
)。 - 当您更改了 “models.py” 中的模型结构时,Django会根据这些变更生成新的迁移文件,用于更新数据库结构以保持一致。
- 存储与 “app01” 模型相关的数据迁移历史记录文件(
- models.py
- 该文件定义了 “app01” 中的数据库模型(也称为数据结构或对象)。
- 每个模型继承自
django.db.models.Model
并定义字段及其属性,例如字段类型、验证规则、外键关联等。它是实现业务逻辑的基础,并最终决定了数据库表的设计。
- tests.py
- 用于编写单元测试(Unit Tests)的模块,确保 “app01” 应用中各个功能模块正确无误地工作。
- 通过
unittest.TestCase
类或使用更高级别的测试框架如pytest
进行测试用例编写。
- views.py
- 视图(Views)是 “app01” 中的主要逻辑处理模块,负责接收 HTTP 请求并返回响应。
- 它们是Django URL 路由系统与用户交互的核心部分,定义了如何解析请求、调用相应的业务逻辑以及构建最终返回的响应数据。
- 每个视图通常与 URLconf 中的一个 URL 路由关联起来。
dmin类,以便管理和编辑数据库表中的记录。
- 如果没有特定需求,可以保持为空或者注释掉。
- apps.py
- 此文件定义了 “app01” 应用本身,包括应用的元数据(如名称、路径等)、是否启用该应用,以及与其他应用的关系(如有依赖)。
- migrations
- 存储与 “app01” 模型相关的数据迁移历史记录文件(
.py
)和应用状态文件(.pyc
)。 - 当您更改了 “models.py” 中的模型结构时,Django会根据这些变更生成新的迁移文件,用于更新数据库结构以保持一致。
- 存储与 “app01” 模型相关的数据迁移历史记录文件(
- models.py
- 该文件定义了 “app01” 中的数据库模型(也称为数据结构或对象)。
- 每个模型继承自
django.db.models.Model
并定义字段及其属性,例如字段类型、验证规则、外键关联等。它是实现业务逻辑的基础,并最终决定了数据库表的设计。
- tests.py
- 用于编写单元测试(Unit Tests)的模块,确保 “app01” 应用中各个功能模块正确无误地工作。
- 通过
unittest.TestCase
类或使用更高级别的测试框架如pytest
进行测试用例编写。
- views.py
- 视图(Views)是 “app01” 中的主要逻辑处理模块,负责接收 HTTP 请求并返回响应。
- 它们是Django URL 路由系统与用户交互的核心部分,定义了如何解析请求、调用相应的业务逻辑以及构建最终返回的响应数据。
- 每个视图通常与 URLconf 中的一个 URL 路由关联起来。