* 开发环境的搭建
* django 介绍
* django 安装
* git
## 开发环境的搭建
```
1.安装 pyenv https://github.com/pyenv/pyenv-installer
curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash
vim ~/.bashrc
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
将其写入最后
source ~/.bashrc
echo $PATH #如果出现这个 /home/qulinx/.pyenv/shims 表示 pyenv 安装成功
pyenv update
cd ~
ls -al
.pyenv
pyenv install --list
pyenv versions #查看已经安装的Python版本
下载软件包 Python-2.7.9.tar.xz Python-3.6.4.tar.xz
mkdir -p ~/.pyenv/cache
把它放到 ~/.pyenv/cache
pyenv install 3.6.4 -v #-v查看安装过程
pyenv rehash
pyenv global 3.6.4
```
## pyenv +virtualenv
> 两个产品 同时使用Python3.6 但是 a产品 使用的是 django 或者flask 1.0 b产品使用的是 djang 或者flask 2.0 为了让这两个产品同时在一个服务器上 运行 需要 pyenv + virtualenv 结合来使用
```
pip install virtualenv
sudo pip install --upgrade virtualenv
使用virtualenv
1.创建项目目录
sudo mkdir -p ~/myproject/blog
2.切换到项目目录
cd ~/myproject/blog
3.创建虚拟环境
pyenv virtualenv python版本号 虚拟环境名字
4.pyenv activate 虚拟环境名字
(env36) qulinx@qulinx-virtual-machine: #表示当前位于env36环境下
在这里可以安装 django 指定的版本
pip install django==2.0.2
5.pyenv deactivate env36 切出虚拟环境
psm pip 默认从官网上下载软件 为了提高下载速度 psm 能够让pip从国内源下载
pip install psm
psm ls 列出所有国内源
psm show 查看当前用的哪一个
psm use douban 应用豆瓣 源
```
# virtualenv 问题
创建虚拟环境 首先需要创建 项目目录 如果说 不同的人创建项目目录 不在一个地方 不太好管理
需求 :所有的虚拟环境 统一在一个目录下
### virtualenvwrapper 让管理虚拟环境 更加简单化
```
安装 virtualenvwrapper
pip install virtualenvwrapper
vim ~/.bashrc
if [ -f /home/你的用户名/.pyenv/versions/3.6.4/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/home/你的用户名/.pyenv/versions/3.6.4/bin/python
export VIRTUALENVWRAPPER_VIRTUALENV=/home/你的用户名/.pyenv/versions/3.6.4/bin/virtualenv
source /home/你的用户名/.pyenv/versions/3.6.4/bin/virtualenvwrapper.sh
fi
source ~/.bashrc
1.创建虚拟环境
mkvirtualenv 虚拟环境的名字
mkvirtualenv my_env
deactivate 退出虚拟环境
lsvirtualenv 列出所有的虚拟环境
rmvirtualenv 虚拟环境名字 #删除虚拟环境
workon 虚拟环境名字 #切换到指定的虚拟环境
workon 后面什么都不加 列出可以使用的 虚拟环境
workon 虚拟环境名字 然后 cdvirtualenv #切换到虚拟环境所在的目录
创建虚拟环境的时候指定 Python版本
mkvirtualenv --python=python路径 虚拟环境的名字
```
### windows virtualenvwrapper安装
```
pip install virtualenvwrapper-win
mkvirtualenv --python=C:\Python\Python36\python.exe 虚拟环境的名字 创建虚拟环境并制定Python版本
deactivate 退出虚拟环境
workon 虚拟环境名字 #切换虚拟环境
lsvirtualenv #列出所有的虚拟环境
rmvirtualenv 虚拟环境名字 #删除制定的虚拟环境
cdvirtualenv 切换到虚拟环境所在的目录
C:\Users\neyo>workon my_env
(my_env) C:\Users\neyo>cdvirtualenv
(my_env) C:\1806env\my_env>
```
## 创建一个目录用来存放所有的虚拟环境
```
到这个目录下面就能知道 有哪些虚拟环境
我的电脑 属性 环境变量 系统变量
添加 WORKON_HOME
C:\1806env #你指定的目录
```
## 准备工作
```
python 3.6 版本
安装 virtualwrapper
安装 django==2.0
pycharm professional 专业版
安装 mysql5.7
安装 pymysql
```
## django 介绍
2003 发布第一个版本 2005年正式版本 Simon、andrian 目的是为了 节省开发者的时间
| django版本 | Python版本 |
| ---------- | ------------------- |
| 1.8 | 2.7 3.2 3.3 3.4 3.5 |
| 1.9 1.10 | 2.7 3.4 3.5 |
| 1.11 | 2.7 3.4 3.5 3.6 |
| 2.0 | 3.4 3.5 3.6 |
| 2.1 | 3.5 3.6 3.7 |
### web服务器 应用服务器 应用框架
* web服务器 处理http请求 响应 静态文件 将动态请求传给应用服务器 apache nginx lighttpd 、IIS (微软)
* 应用服务器 用来处理业务逻辑 Python php j2ee .net web服务器不直接响应 动态请求
* web应用框架 用Python php java javascript 封装一些常用的web功能
* django
* flask
* struct2 spring3
* thinkphp laravel zendframwork ci YII2
### mvc设计模式
* m model 数据模型 一个数据表 就是 一个model
* v view 视图
* c controller
### MTV设计模式
* m model 模型 一个数据表 就是一个model
* t template 模板
* v view 视图
### 官网
> https://docs.djangoproject.com/en/2.1/ 中文文档 +官网
>
> http://python.jobbole.com/87814/ Python + Django 如何支撑了 7 亿月活用户的 Instagram?
>
> https://www.v2ex.com/
>
> https://segmentfault.com/
### url 组成部分 url 又叫统一资源定位符 uniform resource locator
```
https://www.baidu.com:443/tag/小说/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=Python培训#3
https 访问协议 http https ftp
www.baidu.com 主机名/域名/ip地址
443 表示端口号
tag/小说 表示查找的路径 表示访问子目录
/?s 表示查询的字符串
#3 锚点 后台不用管 前台用来页面定位用
```
> url 中所有的字符都是 ASCII 码 如果非 ASCII 比如中文 浏览器会先进行编码 然后 传输
## 创建 django 项目
1. 用命令行的方式
```
windows cmd
cd 表示查看当前位于哪个目录下
可以创建一个目录 单独用来存放所有的项目
1.先进入虚拟环境 workon 虚拟环境名称
2.django-admin startproject 项目名称
3.进入项目所在的目录
4.启动项目 python manage.py runserver 在浏览器 访问 127.0.0.1:8000
ctrl+c 结束
```
2. 用pycharm
```
file -newproject -django 选择项目安装目录 existing interpreter (这里要选择你创建的虚拟环境的目录 )
有上角 绿色按钮 启动 红色 按钮停止
编辑配置 里边 选择 single instance only 表示每次 只运行 一个实例 避免 以后多个实例 不知道哪一个真正生效
关闭项目
file->close project ->然后 出来所有项目的列表 ->点击x即可
```
让别人访问你的项目
```
1.windows 下面
python manage.py runserver 0.0.0.0:8000
然后 在settings.py下面 谁要访问你 你的ip地址
ALLOWED_HOSTS = ['10.11.53.58']
2.pycharm
editing configuration
host 改为 0.0.0.0 然后制定端口号
然后 在settings.py下面 谁要访问你 你的ip地址
ALLOWED_HOSTS = ['10.11.53.58']
记得重启
上面会出现一个问题 本地没法访问
只需要在
settings.py下面 谁要访问你 你的ip地址
ALLOWED_HOSTS = ['10.11.53.58','127.0.0.1']
重启即可
```
### django 目录架构
* manage.py 项目交互都是 基于这个文件 python manage.py 子命令
* python manage.py startproject
* python manage.py help
* 除非有特殊需求 一般这个文件 不编辑
* settings.py 本项目的设置项 和项目有关的配置都放在 这里边
* urls.py 配置我们的url 路由的 比如 我们访问 http://127.0.0.1:8000/news 目标是访问新闻页面 在urls中 让你通过 news 找到 新闻页面
* wsgi.py 专门用来部署 一般不需要修改
## django 项目规范
* 最开始 希望 不同的模块单独分开 需要创建 一个 Python package
* django 根据功能进行了分层 比如 豆瓣中的 读书 电影 音乐 模块 所有跟模块相关的views 统一写在 该app下面的views.py中
* python 提供了一个非常方便的命令
python manage.py startapp app名称
创建成功以后 里边自动创建了多个文件 比如 views.py admins.py models.py
我们需要访问 http://127.0.0.1:9000/movie/
```
1.服务器接收 浏览器的请求
2.先到 settings.py里边查看 ROOT_URLCONF = 'first.urls' 也就是 所有的url请求 都到 first 下面urls.py 下设置 找 urlspatterns 变量
3.到 first 下面urls.py 下
from movie import views #意思是 引入movie 下面的 views.py
path('movie',views.movie),
4.到 movie 下面 编辑 views.py
from django.http import HttpResponse
def movie(request):
return HttpResponse("电影首页")
```
## 视图函数
> 127.0.0.1:9000 movie() 就是它的视图函数
```
from django.http import HttpResponse
def movie(request): #第一个参数必须是 request 这个参数绝对不能少
return HttpResponse("电影首页") #返回值必须是 django.http.response.HttpResponseBase 的一个子类对象
```
## django debug模式
```
项目下面的 settings.py 第26行 DEBUG = True 默认开启
开启以后好处:
1.每次ctrl+s 以后会自动重启项目 不需要手动重启
2.代码冲出现bug 在浏览器和控制台会提示错误信息
3.在生产环境下面 我们要求关闭掉 debug
4.DEBUG = False 当debug为False 注意 F大写 下面的ip地址 必须设置
ALLOWED_HOSTS = ['127.0.0.1','10.11.53.58']
```