我从半年前接触Django框架,但是学习的时候没有做任何笔记,实操也不多,因此现在回过头来的时候,反而有点生疏。现在我打算系统地整理一遍Django的知识点,分享给大家一起学习。
- 虚拟环境
- MVC
- Django框架
- 创建Django项目
- 运行Django项目
- Django项目结构
- DEBUG模式
1. 虚拟环境
为什么要使用虚拟环境?
直接通过pip install的方式进行安装第三方包的时候,这样安装会将那个包安装到你的系统级的Python环境中:
Lib文件夹里存放着安装好的模块:
pip安装的模块,默认安装最新版本的,如果想使用另外一个版本的模块,需要卸载安装
同理,如果你需要用不同的Django版本写多个不同的网站,在维护时,不同版本之间互不兼容
这时候就会碰到一个问题,我如何在电脑中同时拥有Django的多套环境呢?
这时候我们就可以通过虚拟环境来解决这个问题
虚拟环境virtualenv
安装virtualenv
virtualenv是用来创建虚拟环境的软件工具,我们可以通过pip来安装:
创建虚拟环境
创建虚拟环境的时候指定Python解释器:
如图所示:
回车后等待一段时间,setuptools,pip,whell等都是python这门语言最基本的文件,安装完成后多了一个文件夹即刚刚自己设置的虚拟环境名字
进入虚拟环境
进入这个文件夹:
可以看到在执行完activate后,命令的开头变了,多了虚拟环境的名称,接下来查看pip已安装的库:
虚拟环境相比于全局环境安装的库:
在虚拟环境里安装一个库:
退出虚拟环境
进入虚拟环境用的是activate,退出的命令只需要在前面加一个de,即deactivate
virtualenv的不足就在于安装库时,需要进入多个文件夹,非常麻烦
虚拟环境virtualenvwrapper
安装virtualenvwrapper
windows下用pip安装:
如下图所示:
创建虚拟环境
跟virtualenv的创建方法类似:
如下图所示:
安装一个six模块:
到这一步,我们打开cmderdemo文件夹:
发现并没有刚刚的env_test1文件夹,原因是virtualenvwrapper默认安装到电脑中C盘的当前登录用户的Envs目录下
而安装在c盘会占用大量空间,因此我们需要修改mkvirtualenv的默认路径
修改mkvirtualenv的默认路径
在我的电脑->右键->属性->高级系统设置->环境变量->系统变量中添加一个参数WORKON_HOME,将这个参数的值设置为你需要的路径:
修改之后,重新打开一个cmder并新建一个虚拟环境:
这时再来看一下pip list:
再加深一下印象,可以看到不同虚拟环境之间是不影响的
退出当前虚拟环境
一样的道理,在activate前加上de:
切换/进入某个虚拟环境
使用virtualenvwrapper安装虚拟环境时,是自动进入虚拟环境的,退出虚拟环境后,怎么再次进入虚拟环境呢?
使用如下命令:
效果如下:
在虚拟环境里切换另一个虚拟环境也是可以的
列出所有虚拟环境
删除某个虚拟环境
虚拟环境pipenv
安装pipenv
windows下使用pip安装:
如下所示:
创建虚拟环境
使用如下命令创建:
等一会后:
可以看到,不管哪种安装方式,最基本的东西都是一样的
进入/退出/删除虚拟环境
退出直接用exit即可:
再次进入时只需要pipenv shell(要在项目里)即可:
查看当前目录:
其中env_test是之前安装的虚拟环境,而另一个文件,我们打开看一下:
使用vim命令打开:
文件里的内容:
url # 指定国内pip源,不然下载库会很慢
dev-packages # 开发环境
packages # 生产环境
django = “*” # 表示最新版本
requires # Python版本
生产环境可以理解为线上的项目
管理开发环境
安装在开发环境下:
在虚拟环境中运行命令,使用run参数:
pipenv有个缺点,lock不稳定而且时间非常长,所以安装包的时候记得加上:
最后开发完成要提价到仓库的时候在pipenv lock:
2. MVC与MVT
MVC
Django也遵循MVC思想,但是有自己的一个名词,叫做MVT
下面将通过模拟用户注册来讲解MVC思想:
- C: controller,控制器,接收请求进行处理
- M: model,与数据库交互的模型
- V: view,视图,即产生的html界面
具体步骤:
- 用户提交注册信息
- 控制器将请求交给模型
- 模型将数据交给数据库(写入)
- 数据库返回写入结果(成功或失败)
- 模型将结果返回给控制器
- 视图根据结果生成对应的界面
- 视图将界面返回给控制器
- 控制器将界面返回到浏览器
MVC的思想是分工,即让专门的人做专门的事,或者说"解耦"
MVT
下面来看一下MVT:
其实作用是一样的
3. Django框架
下面是Django的中文文档链接:
https://docs.djangoproject.com/zh-hans/3.0/faq/
Django版本和Python版本
使用Django前首先要安装Python。下面的表格介绍了各个Django版本所支持的Python版本:
这个表格在官方文档里可以找到
Django开发原则
快速开发和DRY原则
Do not repeat yourself.不要自己去重复一些工作
4. 创建Django项目
先在虚拟环境中安装好Django:
4.1用命令行的方式
创建项目:打开终端,使用命令:
如下所示:
出现下一行时则表示创建成功,ls查看一下:
用pycharm打开该文件夹:
看到这几个文件后,说明项目已成功创建!
4.2用pycharm的方式
如果pycharm是专业版的话,可以用pycharm安装Django
5. 运行Django项目
5.1通过命令行的方式
进入虚拟环境,输入如下命令:
如下图所示:
打开上面的地址:
这是Django的默认界面,与版本无关
默认端口号是8000,如果想要修改端口号,那么在运行的时候可以指定端口号:
5.2通过pycharm运行Django项目
打开manage.py文件:
直接右键运行是不行的:
要让项目跑起来,需要在edit configurations中设置:
打开它,在第二行加上runserver:
这时候再来运行:
这样项目就能跑起来了,也能访问这个界面:
在runserver后跟上端口即可修改端口
6. Django项目结构
- manage.py:以后和项目交互基本上都是基于这个文件。一般都是在终端输入python manage.py [子命令]。可以输入python manage.py help看下能做什么事情。除非你知道你自己在做什么,一般情况下不应该编辑这个文件。
- settings.py:本项目的设置项,以后所有和项目相关的配置都是放在这个里面。
- urls.py:这个文件是用来配置URL路由的。比如访问http://127.0.0.1/news/是访问新闻列表页,这些东西就需要在这个文件中完成。
- wsgi.py:项目与WSGI协议兼容的web服务器入口,部署的时候需要用到的,一般情况下也是不需要修改的。
project和app的关系
app是django项目的组成部分
一个app代表项目中的一个模块,所有URL请求的响应都是由app来处理。比如豆瓣,里面有图书,电影,音乐,同城等许许多多的模块,如果站在django的角度来看,图书,电影这些模块就是app,图书,电影这些app共同组成豆瓣这个项目。
因此这里要有如下概念:
- django项目由许多app组成
- 一个app可以被用到其他项目
- django也能拥有不同的app。
app的创建与使用
创建app
也是没有提示:
app中的文件
- init.py 说明目录是一个Python模块
- models.py 写和数据库相关的内容
- views.py 接收请求,处理数据 与M和T进行交互
- tests.py 写测试代码的文件(暂时不需要关心)
- admin.py 网站后台管理相关的
应用注册
建立应用和项目之间的联系,需要对应用进行注册。
修改settings.py中的INSTALLED_APPS配置项。
Django初体验
将下面这段代码加入urls.py文件中:
运行manage.py文件并打开网址:
图书首页:
电影首页:
7. DEBUG模式
在settings.py文件里可以打开或关闭DEBUG模式:
- 开启了debug模式,那么修改代码,然后按下ctrl+s,那么Django会自动重启项目
- Django项目中代码出现了问题,在浏览器中和控制台中会打印错误信息
- 如果项目上线了,关闭debug模式,不然有很大的安全隐患
- 关闭DEBUG模式,在setting文件中,将DEBUG = False