什么是Django
- Django是一个基于Python的高级web开发框架;它能让开发人员进行高效且快速的开发,高度集成,免费且开源
Django的优点
- DRY,强调快速开发
- 优雅的URL设计
- 自带强大后台
- 强大的数据库功能
- 缓存系统
Django的缺点
- 系统的耦合度太高
- 模板语言的支持相对比较简单
Django的MTV架构
- Model层,和MVC中的model层一样,负责应用程序的数据以及数据的处理
- Template层,根据需求展示Model层的数据,使用Django的Template的语法
-
View层,类似于MVC的Controller,负责应用逻辑的控制
环境搭建
- Python安装:https://www.python.org/
- Django安装:https://www.djangoproject.com/download/
- 开发工具Pycharm安装:https://www.jetbrains.com/pycharm
Django的典型业务流程
创建工程
-django-admin.py startproject [proj name]
- 运行开发服务器
在myblog目录下,输入:
python manage.py runserver
然后在浏览器中输入:
127.0.0.1:8000
Django项目的目录结构
Manage.py
- 执行
python manage.py
来查看所有的命令 - 与项目进行交互的命令行工具集的入口项目管理器
- 支持多个命令
—创建数据库
—启动服务runserver
—等等 - 支持扩展自定义的命令
Setting.py
- 整个项目的核心配置文件
—数据库的连接信息
—缓存配置
—Session配置
—静态文件配置
—用户自定义的配置信息
url.py
- Django项目中所有地址(页面)都需要我们去配置其URL
_init.py
- Python中声明模块的文件,内容默认为空
Wsgi.py
- 定义:Python web server gateway interface ,Python服务器网关接口
- Python有许多的 Web 框架,而同时又有许多的 Web 服务器(Apache, Nginx, Gunicorn等),框架和Web服务器之间需要进行通信,如果在设计时它们之间不可以相互匹配的,那么选择了一个框架就会限制对 Web 服务器的选择。
- 为确保可以在不修改Web服务器代码或网络框架代码的前提下,使用自己选择的服务器,并且匹配多个不同的网络框架,对python来说,设计WSGI来解决。
-
WSGI,让开发者可以将 Web 框架与 Web 服务器的选择分隔开来,不再相互限制。可以将不同的 Web 服务器与Web框架进行混合搭配,选择满足自己需求的组合。
Django的项目中的App
一个Django项目有多个App组成
APP
— 一个App对应一组URL
— 每个App是一个独立的目录,每个目录由一个model.py,view.py和test.py,[URL.py]组成
— model.py是应用所需要的数据定义
— view.py是存放App应用逻辑的每个App必须被注册到settings.py的INSTALLED_APP中
Django自带很多App,提供了很多方便的功能
Django.contrib.auth,用户认证
Django.contrib.admin,后台管理应用
…
应用程序目录结构
- migrations
- init.py
- admin.py
- apps.py
- models.py
- test.py
- view.py
URL分发和视图
- Django内部维护了一张URL和视图的映射表,当请求到来的时候,选择匹配URL的视图函数来处理请求
编写路由
-
路由都在urls文件里,它将浏览器输入的url映射到相应的业务处理逻辑。
View.py
- 执行响应的代码所在模块
- 代码逻辑处理的主要地点
- 项目中大部分代码均在这里编写
编写业务逻辑
Django的模板语言
- 用两个大括号包围的表示变量
- 用一个大括号和百分号包围的表示模板标签
—IF判断
—FOR循环 - 支持自定义标签和过滤器
模板标签
- 标签必须成对出现并且关闭
{% IF %} … {% END IF %}
{% FOR %} … {% END FOR %}
返回HTML文件
修改Settings文件
-
为了让django知道html文件在哪里,需要修改settings文件的相应内容。但默认情况下,它正好适用,无需修改。
静态文件
-
我们已经可以将html文件返还给用户了,但是还不够,前端三大块,html、css、js还有各种插件,它们齐全才是一个完整的页面。在django中,一般将静态文件放在static目录中。接下来,在mysite中新建个static目录。
models.py
- 数据模块
- 使用ORM框架
ORM
Model类
每一个Model类表示一张表,生成的数据库表的名字默认是
APP的名字_类的名字
每个Model类里面都有多个Filed的Instance变量
Field对象
- 一个Field变量表示一个表中的字段
- Django支持大量的字段类型,例如 TextField, IntegerField等等
使用数据库
- django通过自带的ORM框架操作数据库,并且自带轻量级的sqlite3数据库。下面我们来看一看:
-
在setting中注册APP
-
在settings配置数据库的相关参数
修改model.py
-
创建用户名和密码两个字段
创建数据库的表
-
python manage.py makemigrations
-
python manage.py migrate
tests.py
- 自动化测试模块
- Django提供了自动测试功能
- 在这里编写测试脚本