diff --git "a/Day31-35/31-35.\347\216\251\350\275\254Linux\346\223\215\344\275\234\347\263\273\347\273\237.md" "b/Day31-35/31-35.\347\216\251\350\275\254Linux\346\223\215\344\275\234\347\263\273\347\273\237.md"
index c51904346..a6ff25f93 100644
--- "a/Day31-35/31-35.\347\216\251\350\275\254Linux\346\223\215\344\275\234\347\263\273\347\273\237.md"
+++ "b/Day31-35/31-35.\347\216\251\350\275\254Linux\346\223\215\344\275\234\347\263\273\347\273\237.md"
@@ -111,7 +111,7 @@ Linux系统的命令通常都是如下所示的格式:
Shell也被称为“壳”或“壳程序”,它是用户与操作系统内核交流的翻译官,简单的说就是人与计算机交互的界面和接口。目前很多Linux系统默认的Shell都是bash(Bourne Again SHell),因为它可以使用tab键进行命令和路径补全、可以保存历史命令、可以方便的配置环境变量以及执行批处理操作。
```Shell
- [root@izwz97tbgo9lkabnat2lo8z ~]# ps
+ [root ~]# ps
PID TTY TIME CMD
3531 pts/0 00:00:00 bash
3553 pts/0 00:00:00 ps
diff --git "a/Day41-55/41.\345\277\253\351\200\237\344\270\212\346\211\213.md" "b/Day41-55/41.\345\277\253\351\200\237\344\270\212\346\211\213.md"
index 76a9af068..2ee1ec23e 100644
--- "a/Day41-55/41.\345\277\253\351\200\237\344\270\212\346\211\213.md"
+++ "b/Day41-55/41.\345\277\253\351\200\237\344\270\212\346\211\213.md"
@@ -33,13 +33,13 @@ HTTP响应(响应行+响应头+空行+消息体):
![](./res/http-response.png)
-> 说明:这两张图是在2009年9月10日截取的,但愿这两张如同泛黄的照片般的截图能帮助你了解HTTP到底是什么样子的。
+> 说明:这两张图是在2009年9月10日凌晨获得的,但愿这两张如同泛黄的照片般的截图能帮助你了解HTTP到底是什么样子的。
### Django概述
-Python的Web框架有上百个,比它的关键字还要多。所谓Web框架,就是用于开发Web服务器端应用的基础设施(通常指封装好的模块和一系列的工具)。事实上,即便没有Web框架,我们仍然可以通过socket或[CGI](https://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E7%BD%91%E5%85%B3%E6%8E%A5%E5%8F%A3)来开发Web服务器端应用,但是这样做的成本和代价在实际开发中通常是不能接受的。通过Web框架,我们可以化繁为简,同时降低创建、更新、扩展应用程序的工作量。Python的Web框架中比较有名的有:Flask、Django、Tornado、Sanic、Pyramid、Bottle、Web2py、web.py等。
+Python的Web框架有上百个,比它的关键字还要多。所谓Web框架,就是用于开发Web服务器端应用的基础设施,说得通俗一点就是一系列封装好的模块和工具。事实上,即便没有Web框架,我们仍然可以通过socket或[CGI](https://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E7%BD%91%E5%85%B3%E6%8E%A5%E5%8F%A3)来开发Web服务器端应用,但是这样做的成本和代价在商业项目中通常是不能接受的。通过Web框架,我们可以化繁为简,降低创建、更新、扩展应用程序的工作量。刚才我们说到Python有上百个Web框架,这些框架包括Django、Flask、Tornado、Sanic、Pyramid、Bottle、Web2py、web.py等。
-在基于Python的Web框架中,Django是所有重量级选手中最有代表性的一位,开发者可以基于Django快速的开发可靠的Web应用程序,因为它减少了Web开发中不必要的开销,对常用的设计和开发模式进行了封装,并对MVC架构提供了支持(MTV)。许多成功的网站和App都是基于Django框架构建的,国内比较有代表性的网站包括:知乎、豆瓣网、果壳网、搜狐闪电邮箱、101围棋网、海报时尚网、背书吧、堆糖、手机搜狐网、咕咚、爱福窝、果库等。
+在上述Python的Web框架中,Django无疑是最有代表性的重量级选手,开发者可以基于Django快速的开发可靠的Web应用程序,因为它减少了Web开发中不必要的开销,对常用的设计和开发模式进行了封装,并对MVC架构提供了支持(Django中称之为MTV架构)。许多成功的网站和应用都是基于Django框架构建的,国内比较有代表性的网站包括:知乎、豆瓣网、果壳网、搜狐闪电邮箱、101围棋网、海报时尚网、背书吧、堆糖、手机搜狐网、咕咚、爱福窝、果库等。
![](./res/mvc.png)
@@ -51,7 +51,7 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
1. 检查Python环境:Django 1.11需要Python 2.7或Python 3.4以上的版本;Django 2.0需要Python 3.4以上的版本;Django 2.1需要Python 3.5以上的版本。
- > 说明:我自己平时使用macOS做开发,macOS和Linux平台使用的命令跟Windows平台有较大的区别,这一点在之前也有过类似的说明,如果使用Windows平台做开发,替换一下对应的命令即可。
+ > 说明:我自己平时使用macOS和Linux系统做开发,macOS和Linux系统在命令的使用上跟Windows系统还是有一些差别,如果使用Windows平台做开发,要使用Windows平台对应的命令。
```Shell
$ python3 --version
@@ -64,66 +64,37 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
>>> sys.version_info
```
-2. 创建项目文件夹并切换到该目录,例如我们要实例一个OA(办公自动化)项目。
+2. 更新包管理工具并安装Django管理工具。
```Shell
- $ mkdir oa
- $ cd oa
+ $ pip3 install -U pip
+ $ pip3 install django
```
-3. 创建并激活虚拟环境。
+3. 使用Django管理工具创建Django项目(项目名称为hellodjango)。
```Shell
- $ python3 -m venv venv
- $ source venv/bin/activate
+ $ django-admin startproject hellodjango
```
> 说明:上面使用了Python自带的venv模块完成了虚拟环境的创建,当然也可以使用virtualenv或pipenv这样的工具。要激活虚拟环境,在Windows环境下可以通过"venv/Scripts/activate"执行批处理文件来实现。
-4. 更新包管理工具pip。
+4. 进入项目文件夹,创建并激活虚拟环境。
```Shell
- (venv)$ pip install -U pip
- ```
-
- 或
-
- ```Shell
- (venv)$ python -m pip install -U pip
- ```
- > 注意:请注意终端提示符发生的变化,前面的`(venv)`说明我们已经进入虚拟环境,而虚拟环境下的python和pip已经是Python 3的解释器和包管理工具了。
-
-5. 安装Django。
-
- ```Shell
- (venv)$ pip install django
- ```
-
- 或指定版本号来安装对应的Django的版本。
-
- ```Shell
- (venv)$ pip install django==2.1.8
+ $ cd hellodjango
+ $ python3 -m venv venv
+ $ source venv/bin/activate
```
-6. 检查Django的版本。
-
- ```Shell
- (venv)$ python -m django --version
- (venv)$ django-admin --version
- ```
+ > **提示**:上面使用了Python 3自带的`venv`模块来创建虚拟环境,当然也可以使用如`virtualenv`这样的三方工具来创建虚拟环境;激活虚拟环境后请注意终端中提示符的变化,在虚拟环境下使用Python解释器和包管理工具时,对应的命令是`python`和`pip`,而不再需要键入`python3`和`pip3`。
- 或
+5. 在虚拟环境中安装项目依赖项。
```Shell
- (venv)$ python
- >>> import django
- >>> django.get_version()
+ (venv)$ pip install django mysqlclient django-redis pillow requests
```
- 当然,也可以通过pip来查看安装的依赖库及其版本,如:
- ```Shell
- (venv)$ pip freeze
- (venv)$ pip list
- ```
+ > **提示**:使用`pip`安装三方库时,可以通过如`django==1.11.27`的方式来指定三方库的版本。
下图展示了Django版本和Python版本的对应关系,如果在安装时没有指定版本号,将自动选择最新的版本(在写作这段内容时,Django最新的版本是2.2)。
@@ -135,25 +106,17 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
| 2.0 | 3.4、3.5、3.6、3.7 |
| 2.1、2.2 | 3.5、3.6、3.7 |
-7. 使用`django-admin`创建项目,项目命名为oa。
-
- ```Shell
- (venv)$ django-admin startproject oa .
- ```
-
- > 注意:上面的命令最后的那个点,它表示在当前路径下创建项目。
-
- 执行上面的命令后看看生成的文件和文件夹,它们的作用如下所示:
+ 刚才创建的Django项目其文件和文件夹如下所示:
- `manage.py`: 一个让你可以管理Django项目的工具程序。
- - `oa/__init__.py`:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。
- - `oa/settings.py`:Django项目的配置文件。
- - `oa/urls.py`:Django项目的URL声明(URL映射),就像是你的网站的“目录”。
- - `oa/wsgi.py`:项目运行在WSGI兼容Web服务器上的接口文件。
+ - `hellodjango/__init__.py`:一个空文件,告诉Python解释器这个目录应该被视为一个Python的包。
+ - `hellodjango/settings.py`:Django项目的配置文件。
+ - `hellodjango/urls.py`:Django项目的URL声明(URL映射),就像是你的网站的“目录”。
+ - `hellodjango/wsgi.py`:项目运行在WSGI兼容Web服务器上的接口文件。
> 说明:WSGI全称是Web服务器网关接口,维基百科上给出的解释是“为Python语言定义的[Web服务器](https://zh.wikipedia.org/wiki/%E7%B6%B2%E9%A0%81%E4%BC%BA%E6%9C%8D%E5%99%A8)和[Web应用程序](https://zh.wikipedia.org/wiki/%E7%BD%91%E7%BB%9C%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F)或框架之间的一种简单而通用的接口”。
-8. 启动服务器运行项目。
+6. 启动Django自带的服务器运行项目。
```Shell
(venv)$ python manage.py runserver
@@ -161,21 +124,20 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
在浏览器中输入访问我们的服务器,效果如下图所示。
- ![](./res/django-index-1.png)
-
-
- > 说明1:刚刚启动的是Django自带的用于开发和测试的服务器,它是一个用纯Python编写的轻量级Web服务器,但它并不是真正意义上的生产级别的服务器,千万不要将这个服务器用于和生产环境相关的任何地方。
-
- > 说明2:用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍Python代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器。
+ > **说明1**:刚刚启动的是Django自带的用于开发和测试的服务器,它是一个用纯Python编写的轻量级Web服务器,但它并不是真正意义上的生产级别的服务器,千万不要将这个服务器用于和生产环境相关的任何地方。
+ >
+ > **说明2**:用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍Python代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器。
+ >
+ > **说明3**:可以通过`python manage.py help`命令查看可用命令列表;在启动服务器时,也可以通过`python manage.py runserver 1.2.3.4:5678`来指定将服务器运行于哪个IP地址和端口。
+ >
+ > **说明4**:可以通过Ctrl+C来终止服务器的运行。
- > 说明3:可以通过`python manage.py help`命令查看可用命令列表;在启动服务器时,也可以通过`python manage.py runserver 1.2.3.4:5678`来指定将服务器运行于哪个IP地址和端口。
-
- > 说明4:可以通过Ctrl+C来终止服务器的运行。
+ ![](./res/django-index-1.png)
-9. 接下来我们修改项目的配置文件settings.py,Django是一个支持国际化和本地化的框架,因此刚才我们看到的默认首页也是支持国际化的,我们将默认语言修改为中文,时区设置为东八区。
+7. 修改项目的配置文件settings.py,Django是一个支持国际化和本地化的框架,因此刚才我们看到的默认首页也是支持国际化的,我们将默认语言修改为中文,时区设置为东八区。
```Shell
- (venv)$ vim oa/settings.py
+ (venv)$ vim hellodjango/settings.py
```
```Python
@@ -189,9 +151,10 @@ Django诞生于2003年,它是一个在真正的应用中成长起来的项目
# 此处省略下面的内容
```
-10. 刷新刚才的页面。
+ 刷新刚才的页面,可以看到修改语言代码和时区之后的结果。
+
+ ![](./res/django-index-2.png)
- ![](./res/django-index-2.png)
#### 动态页面