Django框架入门
一、Django简介
1、概述
# 1. Django是什么,有什么作用
Django是一个开放源代码的重量级Web应用框架,由Python语言编写而成(大牛,第三方开源作者),用于进行Web后端程序的开发。
django
# 2. Web前端+数据库+Web后端关系
参考:《前端+数据库+后端关系.png》
比如:淘宝的登录页面,用户在登录页面,输入了用户名和密码,点击登录(form表单提交),向淘宝的服务器发起了一个登录请求,前端需要将用户名和密码传递给服务器,服务器来接收用户名和密码,连接数据库,查询数据库,然后将查询结果返回给前端页面。 这里的服务器实际上就是一个运行后端程序的电脑。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IECzR3rT-1644897251360)(Django01_框架入门.assets/image-20211104140419677.png)]
2、学习目标
快速构造简易但完整的Web项目,认识MTV结构,熟悉Django基本开发流程
二、Django的环境搭建
1、安装Django
django是由开源作者编写的第三方模块 类似之前所用MySQLClient
# 安装方式: windows
1. pip install Django==3.0.6 联网自动下载并安装 -- 推荐使用该方式
2. pip install xxx.whl 下载一个.whl文件
3. 下载源码的压缩包 tar包 解压进入解压目录,执行 python setup.py install 安装即可
# mac 推荐:pyenv安装python
pyenv install 3.7.6
# 检查是否安装成功
1. pip list
2. 终端输入python import django django.VERSION django.get_version()
2、虚拟环境搭建
# 假如:运行多个项目,而且django版本要求不一样
1. 项目一需要django2.0.6 pip install django==2.0.6
2. 项目二需要django1.8 pip install django==1.8
后安装的版本会覆盖掉前一个版本,需要来回安装切换版本,特殊麻烦
此时,就希望在电脑安装多套运行环境,来运行不同的项目
解决方案:虚拟环境,一个独立于本地环境(C盘里的Python环境),用一个虚拟环境来运行一个项目
# 假如:运行多个项目,但需要用到的django版本是一样的,需不需要建多个虚拟环境
一个项目中的第三方模块,不仅仅有django,还会有其它的第三方模块,每个项目需要用到的第三方模块都可能不一样
总结:无论项目用到的django版本是否一致,都应该给每一个项目新建一个独立的虚拟环境
虚拟环境工具:
1. 安装virtualenv
pip install virtualenv
2. 创建虚拟环境
进入某个目录(文件夹上方输入cmd--直达位置) virtualenv 虚拟环境的名字
3. 激活虚拟环境
进入虚拟环境的Scripts目录下 执行 activate 指令
激活后可以在虚拟环境中安装对应的依赖 此时只是安装到了虚拟环境中 而本机计算机中并未安装
4. 安装django等第三方包
pip install django==3.0.6
5. 查看是否安装成功
pip list
6. 退出虚拟环境 在虚拟环境的Scripts目录下执行
deactivate.bat 即可退出
三、创建django项目
1. 打开Pycharm,选择菜单项目中的 File -> New Project -> Django
2. 修改项目名,并选择虚拟环境的解释器即可
# 讲解每个文件的作用,以及如何启动项目 启动单个文件与项目的区别
# view文件中编写视图函数,然后为函数指定对应的路由
项目创建 与目录介绍
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KSBzTKwK-1644897251361)(Django01_框架入门.assets/image-20211104141436669.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gJSymB2Z-1644897251362)(Django01_框架入门.assets/image-20211104142536475.png)]
项目启动方式
1. 使用命令启动
python manage.py runserver
请求与响应流程:
1. 用户在浏览器中,输入url http://127.0.0.1:8000/hello/ 回车,实际是向服务器发起了一个请求
2. 服务器程序(django程序)会接收到请求,在urls.py文件中,匹配路径,找到对应的视图函数
path('hello/',views.hello),
3. 视图函数接收到请求后,返回响应 return HttpResponse("响应的内容") 再回到前端页面
# brower ->发起请求-> server ->接收请求并返回响应-> browser
四、MVC模式
MVC全程Model View Controller, Model指的是业务模型,View指的是用户视图,Controller指的是控制器,是一种软件设计的典范,是一种将业务逻辑、数据、界面显示进行分离方式
django的MTV
本质上就是MVC模型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jgxl5EsC-1644897251362)(Django01_框架入门.assets/image-20211104145703161.png)]
1. M: model 模型 与数据库交互 提供数据 -- Model
2. T:template 模板 html文件 展示界面 -- View
3. V:views 视图 处理业务逻辑 -- Controller
MTV模式的作用:将数据、业务逻辑和界面分离,解耦合
请求执行流程
1. 用户在前端浏览器输入url地址,然后回车其实是向服务器发送了一个请求
2. 该请求会根据协议、ip、端口号找到对应服务器,通过服务器上的程序接收到该请求,django开始处理请求,根据根据匹配到项目中对应的路由地址
3. 根据url地址匹配到对应的视图函数,视图函数开始处理请求,返回处理后的结果 return HttpResponse("字符串")
4. 用户接收到请求返回的响应
五、Django创建app
1. 一个项目往往会分为很多个模块,比如电商项目:用户模块、商家模块、管理模块、订单模块等
2. 在django中使用app来管理每一个模块,一个app就是一个功能模块的集合
3. 将一个模块划分成多个app是一个解耦的过程,整个项目结构松散,利于管理
- 创建app:
在pycharm中打开终端,
python manage.py startapp app名字(模块的名字)
- 在项目主应用根路由下进行路由转发
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# 路由转发:将请求转发到某个匹配到子路由中
path("home/", include("home.urls")),
]
- 在子应用下新建urls.py,进行路由配置
from django.urls import path
from home import views
urlpatterns = [
path("home/", views.home), # 定义路由与视图的映射
]
六、虚拟环境管理工具
虚拟环境管理工具virtualenvwrapper来解决virtualenv的一些不方便之处:
virtualenv的不方便之处:
1. 创建虚拟环境时,需要自己找目录
2. 创建好虚拟环境后,还需要自己去激活虚拟环境
因此引入virtualenvwrapper来解决上述问题:
1. 安装管理工具
pip install virtualenvwrapper-win
2. 配置环境变量
目的:用来指定虚拟环境的存储路径
WORKON_HOME=路径 -- 不要有中文
3. 创建虚拟环境
在任意的目录下执行指令 mkvirtualenv 虚拟环境名字
此时创建出来的虚拟环境就自动存储在WORKON_HOME所指定的目录下
4. 下次重新激活虚拟环境
workon 虚拟环境的名字即可
5. 退出虚拟环境 不需要进入scripts
deactivate
总结:
1. django是什么?
Django是一款由Python开发的重量级的web开源框架,便于我们快速构建web服务
2. 安装django
a.在虚拟环境中安装django
pip install virtualenv
b.在某目录下创建虚拟环境
virtualenv 虚拟环境的名
c.如果要在虚拟环境中安装依赖需要激活虚拟环境
切换到对应虚拟环境的目录中的Scripts目录中 activated
pip instll xxx 此时依赖只会安装在当前虚拟环境中
d.退出虚拟环境
虚拟环境的目录中的Scripts目录中 deactivated.bat
e.虚拟环境不使用时可以直接删除
3. django项目的创建
a. 使用pycharm创建django项目
1. File -> New Project -> Django
2. 配置项目所在位置
3. 项目的解释器
可以创建新的解释器 如果该解释器中没有django 默认会自动安装
可以选择已存在的解释器
4. create即可
b. 开发django项目
django是典型的MTV架构 M:model 代表数据模型 V: View 视图函数 控制器 T: Temapltes 用户页面 html
0. 修改setting.py文件第57行 改成下面的内容即可
'DIRS': [os.path.join(BASE_DIR, 'templates')]
1. 创建子应用 app 将相关功能模块放在一个应用中
在项目的根目录下执行:python manage.py startapp app名
将创建好的app挂载到settings的INSTALL_APPS = [] 中
2. 定义views 编写自己的视图函数
def index(request):
return HttpResponse("xxx") 向前端返回一个字符串
return render(request, "模板名称") 向前端返回一个html页面
3. 为视图定义路由映射
在子应用下定义urls.py文件,在其中定义url与视图的映射
urlpatterns = [
path("url地址", views.xxxx)
]
需要将子应用的urls文件加载到主应用的urls.py文件中
urlpatterns = [
path("url地址/", include("app名.urls"))
]
4. 启动项目,访问该视图函数
http://ip:端口号/主应用地址/子应用地址/
http://127.0.0.1:8000/user/index/
- 开发局域网访问
# 需要将settings中的ALLOW_HOST = ["*"]
改了以后允许所有的用户都可以访问此django
然后--------
找到右上角editconfiguration,
# python manage.py runserver 当前主机的真实ip:端口号
# python manage.py runserver 0.0.0.0:端口号