初识Django

更新时间:2022-05-09 16:34:36点击次数:428次
一、Django基本介绍

1.1 架构分析

img

1.2 组成部分
1.2.1 Django框架的核心
一个 面向对象 的映射器,用作数据模型(以 Python 类的形式定义)和关系型数据库间的介质;
一个基于正则表达式的 URL 分发器;
一个视图系统,用于处理请求;
一个模板系统。
(其中核心框架中还包括
一个轻量级的、独立的 Web 服务器,用于开发和测试。
一个表单序列化及验证系统,用于 HTML 表单和适于数据库存储的数据之间的转换。
一个缓存框架,并有几种缓存方式可供选择。
中间件支持,允许对请求处理的各个阶段进行干涉。
内置的分发系统允许应用程序中的组件采用预定义的信号进行相互间的通信。
一个序列化系统,能够生成或读取采用 XML 或 JSON 表示的 Django 模型实例。
一个用于扩展模板引擎的能力的系统。)
(Django 包含了很多应用在它的 contrib 包中,这些包括:
一个可扩展的认证系统
动态站点管理页面
一组产生 RSS 和 Atom 的工具
一个灵活的评论系统
产生 Google 站点地图(Google Sitemaps)的工具
防止跨站请求伪造(cross-site request forgery)的工具
一套支持轻量级标记语言(Textile 和 Markdown)的模板库
一套协助创建地理信息系统(GIS)的基础框架)

1.3 优点

- 完美的文档,Django近乎完美的官方文档。
- 强大的URL路由配置,Django让你可以设计出非常优雅的URL。
- 自助管理后台,让你几乎不用写一行代码就拥有一个完整的后台管理界面。
- 全套的解决方案(full-stackframework + batteries included),基本要什么有什么(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,开发网站应手的工具Django基本都给你做好了,因此开发效率是不用说的。
1.4 缺点
- Template功能比较弱,不能插入Python代码,要写复杂一点的逻辑需要另外用Python实现Tag或Filter。
- URL配置虽然强大,但全部要手写,高手和初识Django的人配出来的URL会有很大差异。
- 自带的ORM远不如SQLAlchemy强大,SQLAlchemy是Python世界里事实上的ORM标准,其它框架都支持SQLAlchemy了,唯独Django仍然坚持自己的那一套。
- Django的auth跟其它模块结合紧密,功能也挺强,但做的有点过了,用户的数据库schema都给你定好了,比如很多网站要求email地址唯一,可schema里这个字段的值不是唯一的。
- 系统紧耦合,如果你觉得Django内置的某项功能不是很好,想用喜欢的第三方库来代替是很难的,比如说的ORM、Template。要在Django里用SQLAlchemy或Mako几乎是不可能,即使打了一些补丁用上了也会让你觉得非常非常别扭。
1.5 MVC模式与MVT模式
1.5.1 MVC设计模式
MVC即 Model-View-Controller(模型-视图-控制器) ,是经典的软件开发设计模式。
Model (模型):简而言之即数据模型。模型不是数据本身(比如数据库里的数据),而是抽象的描述数据的构成和逻辑关系。通常模型包括了数据表的各个字段(比如人的年龄和出生日期)和相互关系(单对单,单对多关系等)。Web开发框架会根据模型的定义来自动生成数据表。
View (视图): 主要用于显示数据,用来展示用户可以看到的内容或提供用户可以输入或操作的界面。数据来源于哪里?当然是数据库啦。那么用户输入的数据给谁?
当然是给控制器啦。
Controller(控制器):应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据(比如增加或更新数据表)。
如果把MVC看成一个美女的话,那么着装打扮与外貌(View)就是绅士们能够直接看到的;Controller就是大脑控制与人们的交往方式;核心就是美女的心灵(模型、人设),所谓心灵美才是真的美。
MVC最大的优点是实现了软件或网络应用开发过程中数据、业务逻辑和用户界面的分离,使软件开发更清晰,也是维护变得更容易。这与静态网页设计中使用html和css实现了内容和样式的分离是同一个道理。
1.5.2 MVT设计模式
Django的MVT设计模式由Model(模型), View(视图)和Template(模板)三部分组成,分别对应单个app目录下的models.py,views.py和templates文件夹。它们看似与MVC设计模式不太一致,其实本质是相同的。Django的MVT设计模式与经典的MVC对应关系如下。
Django Model(模型): 这个与经典MVC模式下的模型Model差不多。
Django View(视图): 这个与MVC下的控制器Controller更像。视图不仅负责根据用户请求从数据库读取数据、指定向用户展示数据的方式(网页或json数据), 还可以指定渲染模板并处理用户提交的数据。
Django Template(模板): 这个与经典MVC模式下的视图View一致。模板用来呈现Django view传来的数据,也决定了用户界面的外观。Template里面也包含了表单,可以用来搜集用户的输入内容。
Django MVT设计模式中最重要的是视图(view), 因为它同时与模型(model)和模板(templates)进行交互。当用户发来一个请求(request)时,Django会对请求头信息进行解析,解析出用户需要访问的url地址,然后根据路由urls.py中的定义的对应关系把请求转发到相应的视图处理。视图会从数据库读取需要的数据,指定渲染模板,最后返回响应数据。
二、开发环境介绍
2.1 系统支持
mac、windows、linux三种主流操作系统都是支持的,根据自己的喜好进行选择,主推linux
原因:windows和linux编码上有差异,并且有很多库是不支持windows的或者兼容性不如linux。linux是免费试用和自由传播的类Unix操作系统,而mac是一个基于UNIX核心的系统,二者比较相似,bug相对windows更少。
2.2 linux系统
- 使用虚拟机安装linux
- 云服务器使用
- 双系统安装
2.3 开发环境支持
Python:Django基于Python开发的web框架,不同版本的Django依赖的python环境可能是不一样的,例如Django2就不支持Python3.7以上(不包括)的版本中进行开发,Django3则能在Python3.6(包括)以上的环境中进行开发。我们使用Django版本为3.1.7,如有3.6以下Python的请更新Python环境。
pip:包管理工具。
virtualenv:Python专属虚拟环境,用于保持一个干净的环境。
mysql:常用的关系型数据库。
三、虚拟环境创建(使用wrapper进行管理)
为什么要使用虚拟环境?
在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如flask、Scrapy等,但是每个项目使用的库并不一样,或者使用到的框架版本不一样,这样在我们更换项目时就需要去对相应库进行更新卸载,如果直接对我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也是很不方便。
虚拟环境:
虚拟环境的特点:干净,环境与环境之间是相互独立
爬虫项目放在虚拟环境1中
django项目放在虚拟环境2中
环境1中的包在环境2中不能使用,同理环境2中的包在环境1中也无法使用
问题:
如果将所有的项目都依赖于一个环境去运行?
答:会造成环境比较乱,并且不同的项目使用到的包的版本可能不同,那么就会造成环境冲突的问题最好就是一个项目使用一个虚拟环境
(一)windows中的虚拟环境管理
1. 安装wrapper工具:
用于虚拟环境管理
pip install virtualenvwrapper-win
2. 创建虚拟环境
mkvirtualenv xxx
3. 指定使用Python版本创建虚拟环境
mkvirtualenv --python =path xxx
4. 创建的虚拟环境存放目录(默认)
C:\Users\<Username>\Envs
5. 修改默认存放路径
添加环境变量
WORKON_HOME XXX
6. 查看所有虚拟环境
workon 
lsvirtualenv -b
7. 进入/退出/删除虚拟环境
workon xxx
deactivate.bat
rmvirtualenv xxx
(二)Linux中的虚拟环境管理
1.修改环境变量配置文件如下
vim ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs
source /home/<username>/.local/bin/virtualenvwrapper.sh
# 配置完成保存后执行
source ~/.bashrc
2. Linux下的Python虚拟环境创建
(1)下载工具
sudo apt-get install python-virtualen
sudo yum install python-virtualenv
(2)创建虚拟环境目录
virtualenv xxx
(3)使用虚拟环境
cd xxxx/bin
source activate
(4)退出虚拟环境
deactivate
(5)指定使用Python版本创建虚拟环境
virtualenv   -p /path/xxx/python3 xxx
(三)wrapper管理虚拟环境的其他操作
1.查看
workon
lsvirtualenv -b
2.进入/退出/删除
workon xxx
deactivate
rmvirtualenv xxx
四、Django项目创建与服务启动
1.安装Django
pip install django==3.1.7
2.第一个django项目
创建名为xxx的项目:
django-admin startproject xxx
创建完一个项目会出现这些东西(后面讲)
3.创建子应用:
cd xxx   //项目根目录
python manage.py startapp xxx
 - admin.py 用于将 Model 定义的数据表注册到管理后台,是 Django Admin 应用的配置文件; 
 - apps.py用于应用程序本身的属性配置文件
 - models.py 用于定义应用中所需要的数据表;
 -  tests.py文件用于编写当前应用程序的单元测试; 
 - views.py 用来定义视图处理函数的文件; 
 - 一级目录下的 __init__.py 文件标识
 - migrations 目录用于存储数据库迁移时生成的文件,该目录下的 __init__.py
   文件标识 migrations 是一个 Python 包。
4.将项目文件夹标记为根目录,为了让编辑器能够识别
右键点击
5.注册应用
应用名添加上
6.启动服务
从终端启动:
Python manage.py runserver

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息
  • 项目经理 点击这里给我发消息