Django 是 MTV 模型,即
- M 表示模型(Model):编写数据库结构,负责业务对象与数据库的映射(ORM)。
- T 表示模板 (Template):负责如何页面(html)展示给用户。
- V 表示视图(View):负责业务逻辑,并在适当时候调用 Model获取数据和 Template 渲染页面.
除了以上三层之外,还需要一个 URL (urls.py文件)分发器,它的作用是将一个个 URL 的页面请求分发给不同的 View(views.py文件) 处理,View (views.py文件)再调用相应的 Model(models.py文件) 和 Template(template文件夹中的模板文件,包括html等),MTV 的响应模式,如下所示:
使用MTV架构开发网站步骤
- 需求分析
- 数据库设计。
- 了解网站的每一个页面,并设计网页模板(.html)文件
- 使用virtualenv创建并启用虚拟机环境
- 使用pip install安装django
- 使用django-admin startproject命令生成项目
- 使用python manage.py startapp创建app
- 创建templates文件夹,并把所有网页模板文件都放在此文件夹中,如os.path.join(BASE_DIR, 'templates');
- 创建static文件夹,并把所有静态文件(图形文件、css文件、js文件等等)都放在此文件夹中;
- 修改settings.py,把相关文件夹设置都加入,也把生成的app名称加入INSTALLED_APPS序列中;
- 根据数据库设计,编辑models.py,创建数据库表格;
- 编辑views.py,先import在models.py中创建的数据模型;
- 编辑admin.py,把models.py中定义的数据模型导入,并使用admin.site.register注册新增的类,让admin界面可以处理数据库内容;使用python manage.py createsuperuser命令建立数据库管理账号,登录http://127.0.0.1:8000/admin,通过数据库管理界面对数据库数据进行管理。
- 编辑views.py,设计处理数据的相关模块,输入和输出都通过templates相关的模块操作获取来自于网页的输入数据,以及显示html文件的网页内容;
- 编辑urls.py,先import在views.py中定义的模块;
- 编辑urls.py,创建网址和views.py中定义的模块的对应关系。
- 执行python manage.py makemigrations让 Django 记录模型的变更信息(这里不触发数据库数据变更,只是记录在app名称目录\migrations下的0001_initial.py等文件里)。
- 执行python manage.py migrate同步数据库变更,触发数据库和数据表哥结构修改。
- 执行python manage.py runserver测试网站。
- 上线部署
django-admin与manage.py的其他命令
django-admin
是 Django 的命令行工具集;manage.py
是项目的命令工具集,可以执行与django-admin
一样功能的命令集。
命令格式:
django-admim + 参数
python manage.py + 参数
参数说明:
django-admin 和 manage.py命令行工具集 | |
参数 | 作用 |
check | check 命令用来检查整个 Django 项目是否存在错误 |
compilemessages | 用于国际化和本地化时,编译 .po 消息文件为 .mo 文件 |
createcachetable | 在 settings.py 中配置 CACHES 即可实现缓存表功能 |
dbshell | 使用 settings.py 文件中 ENGINE 设置中指定的数据库引擎的命令行客户端,默认的是唤起 Sqlite3 数据库命令行客户端。 |
diffsettings | 显示当前 settings.py 文件与 Django 的默认设置之间的差异 |
dumpdata | 输出指定项目的数据表结构和数据 |
flush | 清空当前数据库的数据。保留 migration 的变更不会被清除。只删除数据,不删除表结构。 |
help | 显示帮助手册,显示命令格式等说明 |
inspectdb | 通过已有数据库表生成 models.py 文件。也可以将视图创建为模型文件。 |
loaddata | 将 fixture 文件加载到数据库中。其中 fixture 是序列化好的文件,文件格式一般为 JSON 和 XML。 |
makemessages | 用于国际化和本地化时,生成 .po 文件 |
makemigrations | 根据模型变化生成迁移代码,迁移代码会存放在每个应用下的 migrations 文件夹(注意,这里只是记录变化,不会触发数据库发生变化,只有执行了migrate命令才会触发数据库变更。) |
migrate | 使数据库状态与当前模型迁移集同步,即把模型的最新状态部署到数据库。 |
optimizemigration | |
runserver | 启用 Django 提供的轻量级的 Web 服务器,该服务器一般用于开发测试,在生产环境中不能使用。 |
sendtestemail | 发送测试邮件以检测邮箱设置是否正确。 语法:django-admin sendtestemail XXXXXXX@163.com |
shell | 启动一个Python交互窗口 |
showmigrations | 显示项目中所有的迁移文件。 |
sqlflush | 打印 flush 命令执行的 SQL 语句。 |
sqlmigrate | 该命令可以将某个 migrate 输出为 SQL 语句 |
sqlsequencereset | 查看对指定app进行sequence重置的sql脚本 |
squashmigrations | |
startapp | 创建 APP 应用 |
startproject | 创建项目应用 |
test | 运行所有已安装应用的测试 |
testserver |