MVT流程:
创建Django项目和应用
-
django-admin startproject name
-
python manager.py startapp name
视图和ULR
-
视图的请求和响应
-
URL的匹配路径
Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计。
Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展性。它还强调快速开发和DRY (DoNotRepeatYourself)原则。
1.2. 特点 1) 重量级框架对比Flask框架,Django原生提供了众多的功能组件,让开发更简便快速。
-
提供项目工程管理的自动化脚本工具
-
数据库ORM支持(对象关系映射,英语:Object Relational Mapping)
-
模板
-
表单
-
Admin管理站点
-
文件管理
-
认证权限
-
session机制
- 缓存
有一种程序设计模式叫MVC,其核心思想是分工、解耦,让不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,实现向后兼容。
MVC的全拼为Model-View-Controller,最早由TrygveReenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式,是为了将传统的输入(input)、处理(processing)、输出(output)任务运用到图形化用户交互模型中而设计的。随着标准输入输出设备的出现,开发人员只需要将精力集中在业务逻辑的分析与实现上。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。现在虽然不再使用原来的分工方式,但是这种分工的思想被沿用下来,广泛应用于软件工程中,是一种典型并且应用广泛的软件架构模式。后来,MVC的思想被应用在了Web开发方面,被称为Web MVC框架。
MVC模式说明:
- M全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作。
- V全拼为View,用于封装结果,生成页面展示的html内容。
- C全拼为Controller,用于接收请求,处理业务逻辑,与Model和View交互,返回结果。
Django的MVT:
- M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理。
- V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回应答。
- T全拼为Template,与MVC中的V功能相同,负责封装构造要返回的html。
注:差异就在于黑线黑箭头标识出来的部分
1.3. Django学习资料- 官方网站:The web framework for perfectionists with deadlines | Django
- Github源码:https://github.com/django/django
- 1.11版英文文档:Django documentation | Django documentation | Django
- 1.11版中文文档:https://yiyibooks.cn/xx/Django_1.11.6/index.html
- Django Book 教程:Django Book Home - Python Django Tutorials
- Tange With Django 教程:How To Tango With Django 1.7 — How to Tango with Django 1.7
- 在开发过程中, 当需要使用
python
的某些工具包/框架时需要联网安装- 比如联网安装Django框架django的1.11.11版本
sudo pip install django==1.11.11
- 提示:使用如上命令, 会将Django安装到
/usr/local/lib/python2.7/dist-packages
路径下 - 问题:如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了.
- 解决方案:
虚拟环境
- 作用:
虚拟环境
可以搭建独立的python运行环境
, 使得单个项目的运行环境与其它项目互不影响. - 所有的
虚拟环境
都位于/home/
下的隐藏目录.virtualenvs
下
- 作用:
详情可以参考博文:Linux系统中创建虚拟环境详解_IT之一小佬的博客-CSDN博客