Django使用基础

Django基础和MVT架构

  • Django的主要目的是简便、快速的开发数据库驱动的网站;强调代码复用,多个组件可以很方便的以”插件”形式服务于整个框架;遵循MVC设计模式,但有一个专有名词:MVT
MVC
- MVC 全拼 Model-View-Controller
- MVC核心思想:解耦
        - 让不同的模块之间降低耦合,增加代码的可扩展性和可移植性,实现更好的向后续版本的兼容
        - 开发原则:高内聚,低耦合
- MVC解析
        - M 全拼为Model, 主要封装对数据库层的访问,内嵌ORM框架,实现面向对象的编程来操作数据库(与数据库交互)
        - V 全拼为View, 用于封装结构,内嵌模板引擎,实现动态发展数据(处理html页面)
        - C 全拼为Controller, 用于接收GETPOST请求,处理业务逻辑,与ModeView交互,返回结果
MVT
  • 重点就是研究 Model-View-Template三个模块间如何协同工作及各自模块的代码如何编写
- MVT全拼 Model-View-Template
- MVT核心思想:解耦
- MVT 解析
        - M(模型)全拼为Model,与MVC中的M功能相同,负责数据处理,内嵌ORM框架
        - V(试图)全拼为View,与MVC中的C功能相同,接收HttpRequest,业务处理,返回HttpResponse
        - T(模板)全拼为Template,与MVCV功能相同,负责封装结构要返回的html,内嵌了模板引擎
设计模式
- 设计模式:是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结
- 使用设计模式的目的:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性
- 设计模式使代码编写真正工程化
- 设计模式是软件工程的基石脉络,如同大厦的结构一样
高聚合,低耦合
耦合性:指软件系统结构中各模块间相互联系紧密程度的一种度量。
    - 模块之间联系越紧密,其耦合性就越强,模块的独立性则越差
    - 摸块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息
内聚性:指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量
    - 若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高
搭建虚拟机环境
# 如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果使用上面的命令, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了.
# 解决方案:虚拟机环境
    - 作用:虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响
    - 所有的虚拟环境都位于/home/下的隐藏目录.virtualenvs下
如何搭建虚拟环境
# 安装虚拟环境的命令
sudo pip install virtualenv
sudo pip install virtualenvwrapper
# 创建虚拟环境的命令
# 提示:如果不指定python版本,默认安装的是python2的虚拟环境
- 在python2中创建虚拟环境
mkvirtualenv 虚拟环境名称
- 在python3中创建虚拟环境
mkvirtualenv -p python3 虚拟环境名称
# 提示
- 创建虚拟环境需要联网
- 创建成功后, 会自动工作在这个虚拟环境上
- 工作在虚拟环境上, 提示符最前面会出现 “虚拟环境名称”
如何使用虚拟环境
# 查看虚拟环境的命令
workon 两次tab键
# 使用虚拟环境的命令
  workon 虚拟环境名称
# 退出虚拟环境的命令
 deactivate
# 删除虚拟环境的命令
rmvirtualenv 虚拟环境名称
  先退出:deactivate
  再删除:rmvirtualenv py3_django
如何在虚拟环境中安装工具包
# 提示 : 工具包安装的位置 
python2版本下:
~/.virtualenvs/py_django/lib/python2.7/site-packages/
python3版本下:
~/.virtualenvs/py3_django/lib/python3.5/site-packages
# 查看虚拟环境中安装的包
pip freeze
创建Django项目
  • 项目的组织结构为 : 一个项目包含多个应用, 一个应用对应一个业务模块.
  • 在当前用户的某个目录下创建项目, 这样不会发生权限问题.
# 创建项目

## 创建项目的命令
django-admin startproject 项目名称(BookManager)
## 项目结构
BookManager : 是与项目同名的文件, 内部包含如下项目的配置文件.
- init.py : 是表示文件BookManager可以被当作包使用
- settings.py : 是项目的整体配置文件
- urls.py : 是项目的URL配置文件
- wsgi.py : 是项目与WSGI兼容的Web服务器入口
manage.py : 是项目运行的入口, 指定配置文件路径.
# 创建应用
cd BookManager/
python manage.py startapp Book
## 项目结构
admin.py : 是后台的站点管理注册文件.
init.py : 是表示文件Book可以被当作包使用
migrations : 是做模型迁移的.
models.py : 是处理数据的.MVT中的M
tests.py : 是做单元测试用的.
views.py : 是处理业务逻辑的.MVT中的V
## 测试服务器
### 在开发阶段, 为了能够快速预览到开发的效果, Django提供了一个纯Python编写的轻量级web服务器
- 仅在开发阶段使用,非正式服务器
### 运行测试服务器的命令
python manage.py runserver ip:端口
例:
python manage.py runserver
模型
# 数据库开发的提示
 MVT 设计模式中的Model, 专门负责和数据库交互.对应(models.py)
由于Model中内嵌了ORM框架, 所以不需要直接面向数据库编程
而是定义模型类, 通过模型类和对象完成数据库表的增删改查
ORM框架就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象
# 使用Django进行数据库开发的步骤
1.定义模型类
class BookInfo(models.Model):
2.模型迁移
1).生成迁移文件:根据模型类生成创建表的语句
python manage.py makemigrations
2).执行迁移:根据第一步生成的语句在数据中创建表
python manage.py migrate
3.操作数据库
# 通过模型类和对象完成数据库表的增删改
python manage.py shell
站点管理
# 站点:分为内容发布和公共访问
# 内容发布的部分由网站的管理员负责查看、添加、修改、删除数据
# Django能够根据定义的模型类自动地生成管理模块
    - 1.管理界面本地化
    - 2.创建管理员
    - 3.注册模型类
    - 4.发布内容到数据库
    - 5.自定义管理页面
# 管理界面本地化
1.语言
LANGUAGE_COOE="zh-Hans"
2.时区
TIME_ZONE="Asia/Shanghai"
# 创建管理员
1.python manage.py createsuperuser
2.用户名
3.密码
视图和URL
# 定义试图
* 视图就是一个Python函数,被定义在应用的views.py中
* 视图的第一个参数是HttpRequest类型的对象reqeust,包含了所有请求信息
* 视图必须返回HttpResponse对象,包含返回给请求者的响应信息
# 配置URLconf
## 在包含的项目的URLconf中配置
        #正则为:只要不是"admin/"就算匹配成功
        url(r'^', include('Book.urls')),
## 在包含的应用的URLconf中配置
        url(r'^booklist/$', bookList)
模板
# 模板使用步骤
1.创建模板
    - 在应用同级目录下创建模板文件夹templates. 文件夹名称固定写法
    - 在templates文件夹下, 创建应用同名文件夹
    - 在应用同名文件夹下创建网页模板文件
2.设置模板查找路径
    - 在settings.py 文件下
        # 设置模板查找路径
        "DIRS":[os.path.join(BASE_DIR, "templates")]
3.模板接收视图传入的数据
#准备上下文:定义在字典中(测试数据)
context = {"title":"测试模板处理数据"}
# 将上下文交给模板中进行处理,处理后视图响应给客户端
return render(request, "Book/index.html", context)
4.模板处理数据
<li>{{title(context的key)}}</li>

实例创建流程

# 流程
1. 客户端发送请求
2. 服务器接收请求,路径通过settings.py中路径入口找到项目中的urls.py(url(r'^', include("Book.urls"))),
3.再找到应用中的urls.py(url(r'^booklist/$', bookList)),匹配出调用那个视图
4. 调用视图views.py,根据业务需求,查询数据库找到models.py(视图对象.objects.all()或get()), 数据库返回一个列表给视图
5.视图再找到渲染模板templates,将数据封装为一个.html文件,再返回给视图
6.视图把这个.html文件返回给客户端

## 安装虚拟环境的命令
sudo pip install virtualenv
sudo pip install virtualenvwrapper
# 在python3中创建虚拟环境
mkvirtualenv -p python3 虚拟环境名称
# 使用虚拟环境命令
workon 虚拟环境名称
# 退出虚拟环境命令
deactivate
# 删除虚拟环境命令
rmvirtualenv 虚拟环境名称
# 安装命令包
pip install 包名称(例django==1.8.2# 创建项目
django-admin startproject 项目名称
# 创建应用
cd BookManager/
python manage.py startapp 应用名称

# 修改解释器路径
/home/python/.virtualenvs/py3_django/bin/python

# 运行服务器
python manage.py runserver

# 模型迁移
## 生成迁移文件
python manage.py makemigrations
## 执行迁移
python manage.py migrate

# 管理界面本地化
## 简体中文
LANGUAGE_COOE="zh-Hans"
## 时区:亚洲/上海时区
TIME_ZONE="Asia/Shanghai"

# 创建管理员
python manage.py createsuperuser

# 设置模板查找路径
"DIRS":[os.path.join(BASE_DIR, "templates")]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值