Django简介
首先先来介绍下两种著名的模型 MVC与MTV模型:
MVC与MTV模型
1、MVC
Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的、松耦合的方式连接在一起,模型负责业务对象与数据库的映射(ORM),视图负责与用户的交互(页面),控制器接受用户的输入调用模型和视图完成用户的请求,其示意图如下所示:
其中大名鼎鼎的java就是使用的mvc模型
2、MTV
Django的MTV模式本质上和MVC是一样的,也是为了各组件间保持松耦合关系,只是定义上有些许不同,Django的MTV分别是值:
-
Model(模型):和数据库相关的,负责业务对象与数据库的对象(ORM)
-
Template(模板):放所有的html文件
模板语法:目的是将白变量(数据库的内容)如何巧妙的嵌入到html页面中
- View(视图):负责业务逻辑,并在适当的时候调用Model和Template
除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:
一般是用户通过浏览器向我们的服务器发起一个请求(request),这个请求回去访问视图函数,(如果不涉及到数据调用,那么这个时候视图函数返回一个模板也就是一个网页给用户),视图函数调用模型,模型去数据库查找数据,然后逐级返回,视图函数把返回的数据填充到模板中空格中,最后返回网页给用户。
MVC和MTV模型 MVC: M : model (与数据库打交道) V : views (存放html文件) C : Controller(逻辑控制部分) MTV M : model (与数据库打交道) T : templates (存放html文件) V : views (逻辑处理) + 路由控制层(分发哪一个路径由哪一个视图函数处理)
二、Django 简介
django 官网:Download Django | Django (djangoproject.com) https://www.djangoproject.com/download/
Django分为1.11版本和后续版本因为后续版本的区别就不大了就相当于python2 和python3
现在的很多老项目都是1.11 版本开发的 新项目是2.X以后的版本开发的
三、Django的安装及配置
1、虚拟环境内下载及配置
为什么在虚拟环境安装呢?因为你本地真实环境只能安装一个django版本,但是你要同时使用django1.11和django2.X就需要虚拟环境了
1.1:创建虚拟环境
参考:windows 同时安装python2和python3并配置虚拟环境 - 可爱的红领巾 - 博客园 (cnblogs.com)
1.2:在虚拟环境中选定安装目录安装django
pip install django==django版本
pip install django==1.2
1.3: 创建django项目
-
一定要选定好目录再创建,不然后面你就找不到这个项目了
-
django-admin startproject 项目名称 django-admin startproject Second 会在当前目录下创建一个名为First的django项目
-
1.4:为项目创建子模块
-
因为一个项目是有很多模块的 一个模块对应不同的功能,每个模块有自己对应的功能流程,所以我们创建项目的应用也叫模块
-
进入到django项目中执行以下命令 python manage.py startapp +模块名称 # 为当前django项目创建一个名为TestOne的模块 python manage.py startapp TestOne
-
以上创建如果报错:SyntaxError: Generator expression must be parenthesized 是因为由于django 1.11版本和python3.7版本不兼容, 2.0版本以后的Django修复了这个问题
所以要么降低python版本要么升级django
1.5:模型迁移 (建表)
迁移由两步完成 :
-
生成迁移文件:根据模型类生成创建表的语句
-
python manage.py makemigrations
-
- 执行迁移:根据第一步生成的语句在数据库中创建表
-
python manage.py migrate
- 提示:默认采用
sqlite3
数据库来存储数据 -
-
1.6:创建后台管理员
-
创建后台管理员
-
python manager.py createsuperuser
-
-
当你的密码忘记后 还可以后台更改密码
- 更改密码
-
-
python manager.py changepassword 用户名
-
1.7:启动项目
-
启动django项目,需要在当前项目的根目录下,因为需要借助manage.py这个文件
-
python manage.py runserver
制定端口启动
python manage.py runserver + 端口
不制定端口默认就是8000端口启动 -
-
-
1
1.8:访问项目
然后就就可以在浏览器中访问这个项目了
在浏览器中输入你的启动的ip+端口号就可以访问了
* ip+端口/admin 可以访问你的管理后台
1、pycharm中安装
1、下载Django:
-
在pycharm或者在cmd命令行中下载中执行以下命令
-
pip install django # 这样下下载的是最先版本的django也可以指定版本下载 pip install django==1.11 下载django1.11 pip install djangp==XXX # 制定版本下载
-
2、创建django项目
-
windows用户,以管理员身份打开一个cmd窗口。进入一个空目录,运行以下命令
-
E:\python_script\django框架\day2>django-admin startproject mysite
-
- 当前目录下会生成mysite的工程,目录结构如下:
-
mysite/ ├── manage.py # 一个命令行工具,可以使你用多种方式对Django项目交互 └── mysite ├── __init__.py # 一个空文件,他告诉python这个目录应该被看做一个Python包 ├── settings.py #项目配置文件 ├── urls.py #url对应关系路由 └── wsgi.py #遵循WSGI规范,uwsgi+nginx
-
manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。 settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。 urls.py ----- 负责把URL模式映射到应用程序。
-
- manage.py : 它不关是启动文件,它还是与Django交互的文件。比如:
-
python manage.py runserver : 运行项目 python manage.py startapp : 创建应用
-
- manage.py------启动文件 (Django项目里面的工具,通过它可以调用Django shell的数目和数据库等)
- settings.py------包含了项目的一些设置,包括数据库信息、调试标志以及其他一些工作的变量。
- urls.py-----------路径与视图函数的映射关系
5、创建项目中的子模块
-
其实和虚拟环境创建的步骤一样只不过将虚拟环境中执行的命令挪到了 pycharm或者cmd命令行中来执行了
-
子模块创建成功后会生成这样一个工程。目录结构如下:
-
创建一个bolg的子应用
blog #应用目录 │ admin.py #对应应用后台管理配置文件。 │ apps.py #对应应用的配置文件。 │ models.py #数据模块,数据库设计就在此文件中设计。后面重点讲解 │ tests.py #自动化测试模块,可在里面编写测试脚本自动化测试 │ views.py #视图文件,用来执行响应代码的。你在浏览器所见所得都是它处理的。 │ __init__.py │ ├─migrations #数据迁移、移植文目录,记录数据库操作记录,内容自动生成。 │ │ __init__.py
6、配置应用识别
- 应用创建好之后我们要想使用它必须在项目的settings内配置这个应用,来告诉项目让项目来识别到这个应用
- 应用创建好了,我们需要在项目目录下的mysite文件夹下的settings.py配置文件里的INSTALLED_APPS选项里注册应用。申明blog这个文件夹是一个APP应用
- 在settings中的INSTALLED_APPS中增加应用识别
- 配置应用识别的方式有两种
- 方式一是直接讲应用的名称输出进去
- 方式二是:子应用名.apps.子应用名Config
-
方式一:直接将应用名输入进去 方式二:子应用名.apps.子应用名Config
- 假如我现在有两个应用一个是login 一个是blog那么以下两种方式都可以
-
7、项目解析
比如微信是一个项目。聊天,朋友圈,支付...都是应用。
项目是必须包含应用的,项目可以包含多个应用。
-
每一个项目下都会包含一个项目同名的文件,是全局文件,它有2个全局配置文件,一个是settings.py(项目配置文件),一个是urls.py(路由控制文件)。
-
wsgi.py是封装socket,用来接收和响应请求的。这个文件,从来都不需要动
- 下面以一个名为First的django项目举例
8、同步生成数据并创建后台管理员:
-
更新并生成初始数据库
-
python manage.py makemigrations python manage.py migrate
-
- 和创建后台管理员
-
创建管理员: python manage.py createsuperuser
9、启动项目
这样我们的django就启动起来了!当我们访问:http://127.0.0.1:8080/时就可以看到:
以上是你在命令行进行的安装和Django的使用
10、Django常用命令
作用 | 命令 |
安装Django | pip install django 指定版本 pip3 install django==2.0 |
新建项目 | django-admin.py startproject mysite |
新建APP | python manage.py startapp blog |
启动 | python manage.py runserver 8080 |
同步或者更改生成 数据库 |
python manage.py makemigrations python manage.py migrate |
清空数据库: | python manage.py flush |
创建管理员 | python manage.py createsuperuser |
修改用户密码 | python manage.py changepassword username |
Django项目环境终端 | python manage.py shell |
更多帮助命令查看 |
python manage.py --help |
下面是pycharm内的安装
模板 templates 这个目录不是放在子应用中的 而是放在项目的根下,和子应用同级别
AttributeError: module 'typing' has no attribute 'NoReturn',是因为我没有在pytcharm中安装django的原因造成的以下报错
首先在命令行内安装好Django或者在pycharm内settings内直接导入进去 然后进入下面:
下面导入你的Django和导入你的python解释器:
下面给你的Django项目起名字(不能是以数字开头):
例如我现在要创建一个laowang的项目 app只有 app01
建议不要用命令行进行创建django文件直接用pycharm可以帮我们自动补全
运行写好的django代码文件:
运行django文件在当前文件路径下输入
python manage.py runserver +ip 端口号
后面的ip和端口号可以加或者不加
切记同一个pycharm只能打开一个django文件如果打开多个就会造成文件运行的时候文件的混乱 而造成的识别出错
在django项目中创建app
python manage.py createapp +app名字
四、Django 配置管理员用户(必须是执行完表更新操作后才可以创建)
* 先执行完:
python manage.py makemigrations
python manage.py migrate
django在1.7版本之后的都需要执行一下命令用来配置django
在你的django启动的时候可以进入后台的管理界面的启动的 时候输入的是
python manage.py createsuperuser
然后你的django启动的端口额后面输入admin就看到了管理界面 然后输入你刚才创建的用户名和密码(密码不可以是太简单的密码)就进入了 管理界面
HttpResponse(字符串) -----》作为响应体返回 主要是返回到浏览器界面上
render ----->返回的是渲染过后的HttpResponse
request----->当作一个形参传递进函数内 它包含的是你浏览器传递过来的所有的信息(包括 请求首行 请求头 请求体)
报错:
SyntaxError: Generator expression must be parenthesized (widgets.py, line 151)
和一下的报错
module 'html.parser' has no attribute 'HTMLParseError'
以上两种报错是因为:由于django 1.11版本和python3.7版本不兼容, 2.0版本以后的Django修复了这个问题,所以我们要适配解释器和