Django
概念
Django 最初被设计用于具有快速开发需求的新闻类站点,目的是要实现简单快捷的网站开发。以下内容简要介绍了如何使用 Django 实现一个数据库驱动的网络应用。(Django是一个开放源代码的第三方模块Web应用框架,并且是一个功能全,重量的框架。Flask框架是一个轻量级功能少,从github上搜索python web项目基本都出来的是django和flask项目)
学习文档可以使用:官网教程
安装
因为django是一个第三方模块并非内置所以需要安装(类似于mysqlclient)。
django安装
检查是否安装:
import django
# 不报错即引入了
print(django.get_version(),django.VERSION)
安装:
# 安装的5.1.7的版本可以通过官网查询对应的新版本
pip install django==5.1.7
虚拟环境安装
1. 为什么要安装虚拟环境
-
项目 A 需要 Django 3.2。
-
项目 B 需要 Django 5.1.7。
-
如果没有虚拟环境,这两个项目的依赖会冲突。
2. 创建虚拟环境
# 创建虚拟环境 最后的参数是你的这个虚拟环境的名称
python -m venv venv
# 激活进入虚拟环境
# Windows
venv\Scripts\activate
# macOS/Linux
source venv/bin/activate
# 退出虚拟环境
deactivate
新建Diango项目
Cmd创建
# django-amdin startproject 项目名称
django-admin startproject myproject
# 启动 注意不要在虚拟环境下启动 这个是cmd命令的 如果是虚拟环境要退出deactivate
# 访问即可 http://127.0.0.1:8000/
cd myproject
python manage.py runserver
目录结构
|-- myProject # 项目的容器
|-- myProject #
| |-- __init__.py # 标识这是一个Python包
| |-- settings.py # 项目的全局配置文件,包括数据库设置、静态文件路径、中间件、模板配置等。
| |-- urls.py # 项目的 URL 路由配置文件,定义 URL 与视图的映射关系。
| `-- wsgi.py # 用于部署项目的 WSGI 配置文件(Web 服务器网关接口)
| `-- asgi.py # 用于支持异步 Web 服务器的 ASGI 配置文件。
`-- db.sqlite3 # 本地小型数据库 跟PyCharm有区别的就是有这个文件其他大差不差
`-- manage.py # Django 项目的命令行工具,用于执行各种管理任务,如启动开发服务器、创建数据库迁移、运行测试等。
Pycharm创建
使用pycharm直接new project选择对应的diango项目即可,名称不要取diango,可以试试新建会没有template和主入口代码。
目录结构
|-- djangoProject # 项目的容器
|-- djangoProject #
| |-- __init__.py # 标识这是一个Python包
| |-- settings.py # 项目的全局配置文件,包括数据库设置、静态文件路径、中间件、模板配置等。
| |-- urls.py # 项目的 URL 路由配置文件,定义 URL 与视图的映射关系。
| `-- wsgi.py # 用于部署项目的 WSGI 配置文件(Web 服务器网关接口)
| `-- asgi.py # 用于支持异步 Web 服务器的 ASGI 配置文件。
`-- manage.py # Django 项目的命令行工具,用于执行各种管理任务,如启动开发服务器、创建数据库迁移、运行测试等。
# manage.py 使用runserver 试试启动服务器并使用默认端口访问 也可以认为是启动类
python manage.py runserver # 启动开发服务器 http://127.0.0.1:8000/admin urls中配置的地址 可以访问admin
python manage.py makemigrations # 创建数据库迁移
python manage.py migrate # 应用数据库迁移
python manage.py startapp myapp # 创建新的应用
PyCharm配置启动命令配置(不用在每次去终端去runserver)
MTV模式
Django 框架采用的是 MTV 模式,这是一种类似于 MVC(Model-View-Controller)的软件设计模式,但 Django 对其进行了调整以适应 Web 开发的需求。MTV 模式将应用程序分为三个核心组件:
-
Model(模型)
-
Template(模板)
-
View(视图)
MTV和MVC对比
MTV | MVC | 作用 |
---|---|---|
Model | Model | 数据层,与数据库交互 |
Template | View | 展示层,渲染 HTML 页面 |
View | Controller | 控制层,处理业务逻辑 |
创建APP
为什么创建app其实对于我们来说就是不同的模块,这个模块说的是用户模块、购物车模块等。
在Pycharm中terminal处,执行如下命令(显示为虚拟环境):
# python manage.py startapp 名称 或者使用 django-admin startapp firstapp
python manage.py startapp firstapp
将新app添加到settings.py中的INSTALL_APPS中即可使用,代表引入
常见命令
命令 | 功能描述 |
---|---|
django-admin startproject <project_name> | 创建一个新的 Django 项目。 |
python manage.py startapp <app_name> | 在项目中创建一个新的 Django 应用。 |
python manage.py runserver | 启动 Django 开发服务器,默认运行在 http://127.0.0.1:8000/ 。 |
python manage.py migrate | 应用数据库迁移,同步模型更改到数据库。 |
python manage.py makemigrations <app_name> | 根据模型的更改创建新的迁移文件。 |
python manage.py showmigrations | 显示所有应用的迁移状态(已应用和未应用的迁移)。 |
python manage.py sqlmigrate <app_name> <migration_number> | 查看特定迁移文件的 SQL 语句。 |
python manage.py createsuperuser | 创建超级用户,用于访问 Django 管理后台。 |
python manage.py shell | 启动 Django 的交互式 Python Shell,可以在其中操作模型和数据库。 |
python manage.py dbshell | 启动数据库的交互式 Shell(需要数据库客户端支持)。 |
python manage.py collectstatic | 收集所有静态文件到 STATIC_ROOT 目录,用于生产环境。 |
python manage.py flush | 清空数据库中的所有数据,但保留表结构。 |
python manage.py test <app_name> | 运行指定应用的测试用例。 |
python manage.py check | 检查项目的配置和代码是否有问题。 |
python manage.py changepassword <username> | 修改指定用户的密码。 |
python manage.py inspectdb | 根据现有数据库表生成 Django 模型代码。 |
python manage.py makemessages | 提取项目中的翻译字符串,生成 .po 文件。 |
python manage.py compilemessages | 编译 .po 文件为 .mo 文件,用于国际化支持。 |
python manage.py clearsessions | 清除过期的会话数据。 |
python manage.py sendtestemail | 发送测试邮件,检查邮件配置是否正确。 |
python manage.py createsuperuser | 创建超级用户,用于访问 Django 管理后台。 |
python manage.py loaddata <fixture_name> | 从固定文件(fixture)中加载数据到数据库。 |
python manage.py dumpdata <app_name> | 将指定应用的数据导出为固定文件(fixture)。 |
python manage.py findstatic <static_file> | 查找指定静态文件的位置。 |
python manage.py diffsettings | 显示当前设置与 Django 默认设置之间的差异。 |
python manage.py remove_stale_contenttypes | 删除数据库中已不使用的 contenttypes 数据。 |
python manage.py createcachetable | 创建缓存表(用于数据库缓存后端)。 |