一、 DJANGO使用指南
Django简介:
Django发布于2005年7月,是当前Python世界里最有名且成熟的网络框架。 最初是被开发用于管理劳伦斯出版集团旗下的以新闻内容为主的网站的,即CMS(内容管理系统)软件。
Django是一个用Python编写的开放源代码的Web应用框架,代码是开源的。此系统采用了MVC的框架模式, 也可以称为MTV模式
什么是MVC模式
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。 通俗的来讲就是,强制性的使应用程序的输入,处理和输出分开。
核心思想:解耦
优点:减低各个模块之间的耦合性(模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准),方便变更,更容易重构代码,最大程度的实现了代码的重用
MVC(Model, View, Controller)
Model: 即数据存取层。用于封装于应用程序的业务逻辑相关的数据,以及对数据的处理。说白了就是模型对象负责在数据库中存取数据
View: 即表现层。负责数据的显示和呈现。渲染的html页面给用户,或者返回数据给用户。
Controller: 即业务逻辑层。负责从用户端收集用户的输入,进行业务逻辑处理,包括向模型中发送数据,进行CRUD操作。
图解:
浏览器中MVC的表现形式图解:
Django的模式简介
MVT模式
严格来说,Django的模式应该是MVT模式,本质上和MVC没什么区别,也是各组件之间为了保持松耦合关系,只是定义上有些许不同。
Model: 负责业务与数据库(ORM)的对象
View: 负责业务逻辑并适当调用Model和Template
Template: 负责把页面渲染展示给用户
注意: Django中还有一个url分发器,也叫作路由。主要用于将url请求发送给不同的View处理,View在进行相关的业务逻辑处理。
二、VIRTUALENV虚拟环境创建指南
前言
本教程中使用到的python版本均为python3.x版本,由于本人安装的是python3.6.3版本,所以以下的课程均是在此基础上进行的。
-
virtualenv使用场景:当开发成员负责多个项目的时候,每个项目安装的库又是有很多差距的时候,会使用虚拟环境将每个项目的环境给隔离开来。
比如,在有一个老项目已经开发维护了3年了,里面很多库都是比较老的版本了。例如python使用的是2.7版本的。但是新项目使用的python版本是3.6的。为了解决这种项目执行环境的冲突,所以引入了虚拟环境virtualenv。
当然除了virtualenv可以起到隔离环境的作用,还有其他技术方案来实现,而且上线流程简单,大大减轻运维人员的出错率,比如每一个项目使用一个docker镜像,在镜像中去安装项目所需的环境,库版本等等
python环境的配置
- 在cmd中能通过python去启动,如果不行直接跳到第三步
-
在cmd中能通过pip3启动安装软件,如果不行直接跳到第三步
3.配置python环境和pip环境
确认pip安装成功,如果Scritp文件夹下没有pip可执行文件,则执行第五步。
由于python3.6安装以后,在Scripts文件中没有pip的可执行软件,需要输入一下命令进行安装
python -m ensurepip
注:现在在python的安装文件夹Scripts下就有pip.exe以及easy_install.exe等可执行文件了,就可以使用pip安装啦~
windows中安装使用
- 安装virtualenv
pip install virtualenv
- 创建虚拟环境
先查看一下安装虚拟环境有那些参数,是必须填写的
注意两个参数:
--no-site-packages和-p参数
virtualenv --no-site-package -p(python环境变量,若环境变量
路径有空格,就用引号把环境变量引上,最好不要有中文)venv
以下是指定安装虚拟环境中的python版本的安装方式:
3. 进入/退出env
进入 cd env/Scripts/文件夹 在activate命令
退出 deactivate
Note:
- 创建virtualenv虚拟环境之前,系统中必须要安装有对应版本的python,并且卸载之后当前虚拟环境就无效了。系统中可以同时存在python2和python3,通过环境变量中的系统变量path(不是用户变量)控制cmd或者系统中使用哪个版本的python,哪个版本的路径在前面就优先使用哪个版本。
- –no-site-packages表示不包括系统全局的Python安装包,这样会更令环境更干净
- –python=python3.6指定Python的版本未系统已经安装了的Python3.6
- env是建立的虚拟环境名称
5 .没有安装python3.6或者使用命令virtualenv --no-site-packages --python=python3.6 env会出现The executable python does notexist 错误
ubuntu中安装使用
- 安装virtualenv
apt-get install python-virtualenv
- 创建包含python3版本的虚拟环境
virtualenv -p /usr/bin/python3 env
env代表创建的虚拟环境的名称
3. 进入/退出env
进入 source env/bin/activate
退出 deactivate
-
pip使用
查看虚拟环境下安装的所有的包
pip list
查看虚拟环境重通过pip安装的包
pip freeze
三、DJANGO使用指南
创建Django项目
1. 首先创建一个运行Django项目的虚拟环境(virtualenv)
虚拟环境的创建在基础课程中讲解,地址
该虚拟环境中有django库,python3,pymysql等等需要的库
大致在罗列下安装了那些库:
pip install Django==1.11(要在虚拟环境里安装)
pip install PyMySQL
2. 创建一个Django项目
2.1 创建项目
django-admin startproject halloWorld
该命令是创建一个名为halloWorld的工程
项目目录介绍
下面展示创建以后的文件,具体有哪些文件:
manage.py: 是Django用于管理本项目的管理集工具,之后站点运行,数据库自动生成,数据表的修改等都是通过该文件完成。manage.py接受的是Django提供的内置命令。
_init_.py: 指明该目录结构是一个python包,暂无内容,在后期会初始化一些工具会使用到。
seetings.py: Django项目的配置文件,其中定义了本项目的引用组件,项目名,数据库,静态资源,调试模式,域名限制等
urls.py:项目的URL路由映射,实现客户端请求url由哪个模块进行响应。
wsgi.py:定义WSGI接口信息,通常本文件生成后无需改动
2.2 运行Django项目
python manage.py runserver 端口(或ip地址:端口
,不能直接写ip地址)
该命令是运行项目,端口可以不用写,启动的时候会默认随机创建一个可以使用的端口
2.2 创建apps
python manage.py startapp apps
该命令是在blog工程下创建一个名为apps的app,进入虚拟环境后,先下载pymsql模块,在setting.py 里DATABASES配置数据库(名字,用户名,密码,host,port等),在INSTALLED_APPS列表后面加上创建app的名字,例如:'apps'.
在控制台输入python manage.py makemigrations和python manage.py migrate。成功后可以在MySQL查看关联的表。
在控制台输入python manage.py runserver 进入网址,在网址后面加/admin 可进入Django管理
3. settings.py配置文件详细解读
a) 设置语言:
LANGUAGE_CODE = 'zh-Hans' 表示中文
LANGUAGE_CODE = 'en-us' 表示英文
设置时区: TIME_ZONE = 'Asia/Shanghai'
b) 时区解释: (需要详细回顾思考时区问题)
UTC:世界标准时间,也就是平常说的零时区。
北京时间表示东八区时间,即UTC+8
四、 模型使用指南
前言
Djang自身集成了管理后台,在管理后台中可以对我们自定义model进行CRUD操作,也能进行列表展示解析,分页等等
使用admin管理后台
0. 准备工作,在model中定义Student的模型
```
class Students(models.Model):
name = models.CharField(max_length=10)
sex = models.BooleanField()
class Meta:
db_table = 'student'
```
1. admin管理后台的url
在工程目录下可以看到路由配置中有一个admin的url地址
```
url(r'^admin/', admin.site.urls),
```
2. 创建admin后台的用户密码
```
python manage.py createsuperuser
```
3. 在登录后的管理后台中对自定义的模型进行CRUD操作
在管理后台中操作模型对象。需要在app的admin.py中写如下代码
```
admin.site.register(模型名)
```
4. 继承admin.ModelAdmin,编写自定义的admin
```
class StudentAdmin(admin.ModelAdmin):
def set_sex(self):
if self.sex:
return '男'
else:
return '女'
set_sex.short_description = '性别'
list_display = ['id', 'name', set_sex]
list_filter = ['sex']
search_fields = ['name']
list_per_page = 1
admin.site.register(模型名, StudentAdmin)
```
其中:<br>
list_display: 显示字段 <br>
list_filter: 过滤字段 <br>
search_fields: 搜索字段 <br>
list_per_page: 分页条数 <br>
5. 使用装饰器去实现注册
```
@admin.register(模型名)
class StudentAdmin(admin.ModelAdmin):
def set_sex(self):
if self.sex:
return '男'
else:
return '女'
set_sex.short_description = '性别'
list_display = ['id', 'name', set_sex]
list_filter = ['sex']
search_fields = ['name']
list_per_page = 1
```