问题描述
该笔记将记录:在学习 Django 过程中而产生的学习笔记,以及相关问题的解决办法。
解决方案
参考 Django/Writing your first Django app, part 1 文档,我们开始进行 Django 的初识与学习。
针对该笔记及其子章节,其主要内容是对官方文档的学习与摘率,包括相关问题的解决方案。
P1 创建应用的基本步骤
python – How to check Django version – Stack Overflow
FAQ: Installation | Django documentation | Django
windows – Django, can’t create app in subfolder – Stack Overflow
参考 Writing your first Django app, part 1 文档,以进行快速入门,通过该文档能够让我们对整个框架的 使用方法、目录结构、路由模式、运行方法 形成基础认识。
创建项目(PROJECT),创建应用(APPLICATION),运行服务,获得能够快速访问的 Web 应用;
// ---------------------------------------------------------------------------- # 版本选择 Django version Python versions 2.2 3.5, 3.6, 3.7, 3.8 (added in 2.2.8), 3.9 (added in 2.2.17) 3.0 3.6, 3.7, 3.8, 3.9 (added in 3.0.11) 3.1 3.6, 3.7, 3.8, 3.9 (added in 3.1.3) 3.2 3.6, 3.7, 3.8, 3.9, 3.10 (added in 3.2.9) 4.0 3.8, 3.9, 3.10 // ---------------------------------------------------------------------------- # 第一步、安装框架 # pip3 install Django==3.2.13 # 我们当前使用的版本 # python3 -m django --version # 查看当前安装版本 # ./manage.py --version # 查看项目所使用版本 // ---------------------------------------------------------------------------- # 第二步、创建项目 # django-admin startproject devops_toolbox # tree devops_toolbox/ devops_toolbox/ ├── devops_toolbox │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-38.pyc │ │ └── settings.cpython-38.pyc │ ├── asgi.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── manage.py # django-admin startapp myapp # 创建应用 # django-admin startapp myapp /Users/jezdez/Code/myapp # 在特定目录创建应用 // ---------------------------------------------------------------------------- # 第三步、运行项目 # python manage.py runserver 0:8000
P2 配置应用访问数据库
参考 Writing your first Django app, part 2 文档,以进行快速入门,以了解数据库的管理和使用方法。
mysite/settings.py
1)ENGINE – 选择后端数据库驱动;
2)NAME – 配置数据库名;
3)TIME_ZONE – 配置时区;
4)INSTALLED_APPS – 当前已经安装的 APPLICATION;在 Django 中,APPLICATION 能够进行打包,然后在其他 PROJECT 中使用;
数据库管理,其使用 migrate 机制:
1) 该机制会读取 INSTALLED_APPS 设置,然后通过 Model 来自动创建和管理数据库;
2)定义的 Model 需要添加到 INSTALLED_APPS 当中;
通过如下命令将 Model 的变更 migrate 到数据库:
1) python manage.py makemigrations <APP-NAME> # 创建迁移文件(用于保存到版本仓库中)
2) python manage.py sqlmigrate <APP-NAME> 0001 # 创建迁移 SQL 文件;
3) python manage.py check # 进行检查而不修改数据库;
4) python manage.py migrate # 将 migration 应用到数据库;
5)Django 使用 django_migrations 表来追踪数据库状态;
在代码中进行数据库操作:
1)python manage.py shell 是交互式 Shell 用于数据库操作;
2)For more information on model relations, see Accessing related objects.
3)For more on how to use double underscores to perform field lookups via the API, see Field lookups.
4)For full details on the database API, see our Database API reference.
与数据库随之而来的还有 Admin 管理后台:
1)python manage.py createsuperuser # 创建 Admin 用户,并访问 http://127.0.0.1:8000/admin/ 地址;
2)默认可进行用户组编辑;
3)通过 admin.site.register() 能够快速注册到后台;
SQL Mode
python – Force strict sql mode in django – Stack Overflow
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'sql_mode': 'traditional', } } }
P3 通过视图来显示页面
P4 表单处理、精简代码
参考 Writing your first Django app, part 4 文档,以学习表单的使用方法,以及如何通过 Generic View 来精简代码;
通过 Generic View 来精简代码:
1)修改 URLconf 参数;
2)修改 view 方法为 class 使其继承各种 Generic View 对象;
P5 应用程序自动化测试
简单测试示例(快速入门):
1)在 test.py 中,创建测试用例
2)测试使用 class 继承 TestCase 父类
3)该类中以 test_为前缀的方法将被执行;
Test Client:
1)入门示例:通过 Shell 方式快速使用 Test Client 来执行测试;
2)并针对测试用例来处理相应问题;
3)WIP 在示例中,多以 Generic View 为例,对于自定义 View 是否需要其他测试方法来处理 HTML 返回问题?
P6 静态资源文件的管理
参考 Writing your first Django app, part 6 文档,获取在 Django 中使用和管理静态资源的方法(IMG CSS JS);
settings.py/STATICFILES_FINDERS:控制找到静态资源的方法;
在 <APP-NAME>/static/ 中,保存 CSS 文件(或其他类型),然后在页面中引用;
依旧存在资源查找问题,所以建议以应用名为子目录;
补充说明,这里需要重新启动 Server 否则无法加载资源;
P7 自动生成的管理站点
参考 Writing your first Django app, part 7 文档,获取对管理后提的定制方法(该部分是对 P2 的补充);
通过代码来控制管理后台表单的显示,增加搜索功能,定义模板搜索路径。
P8 打包并分发应用模块
参考 Advanced tutorial: How to write reusable apps 文档,以获取构建可重用应用的方法。