Merge pull request #42 from Hilbert-Yaa/master

fix: fix markdown and language typos in chapter 2.2.2.1-2.2.2.3
This commit is contained in:
若如意
2021-12-28 15:01:57 +08:00
committed by GitHub
3 changed files with 28 additions and 28 deletions

View File

@@ -63,14 +63,14 @@
</html>
```
- **<!DOCTYPE html>** 声明为 HTML5 文档
- **<html>** 元素是 HTML 页面的根元素
- **<head>** 元素包含了文档的元meta数据
- **<meta charset="utf-8">** 定义网页编码格式
- **<title>** 元素描述了文档的标题
- **<body>** 元素包含了可见的页面内容
- **<h1>** 元素定义一个标题
- **<p>** 元素定义一个段落
- **`<!DOCTYPE html>`** 声明为 HTML5 文档
- **`<html>`** 元素是 HTML 页面的根元素
- **`<head>`** 元素包含了文档的元meta数据
- **`<meta charset="utf-8">`** 定义网页编码格式
- **`<title>`** 元素描述了文档的标题
- **`<body>`** 元素包含了可见的页面内容
- **`<h1>`** 元素定义一个标题
- **`<p>`** 元素定义一个段落
![html](https://gitee.com/theNeverLemon/news-img/raw/master/img/html.png)
@@ -153,7 +153,7 @@ https://www.w3school.com.cn/css/index.asp
<img src="https://gitee.com/theNeverLemon/news-img/raw/master/img/js1.png" alt="js1" style="zoom:60%;" />
- **ECMAScript** 是由ECMA 国际( 原欧洲计算机制造商协会)进行标准化的一门编程语言,这种语言在万维网上应用广泛,它往往被称为 JavaScript或 JScript但实际上后两者是 ECMAScript 语言的实现和扩展。
- **DOM**文档对象模型DocumentObject Model简称DOM是W3C组织推荐的处理可扩展标记语言的标准编程接口。通过 DOM 提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)
- **DOM**文档对象模型Document Object Model简称DOM是W3C组织推荐的处理可扩展标记语言的标准编程接口。通过 DOM 提供的接口可以对页面上的各种元素进行操作(大小、位置、颜色等)
- **BOM**:浏览器对象模型(Browser Object Model简称BOM) 是指浏览器对象模型它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM可以操作浏览器窗口比如弹出框、控制浏览器跳转、获取分辨率等。
@@ -462,7 +462,7 @@ mounted: function () {
在数据发生改变后DOM 被更新之前被调用。
适合在现有 DOM 将要被更新之前访问它,比如移除手动添加的事件监听器。可以在该钩子中进一步地更改状态,不会触发附加重渲染过程.
适合在现有 DOM 将要被更新之前访问它,比如移除手动添加的事件监听器。可以在该钩子中进一步地更改状态,不会触发附加重渲染过程.

View File

@@ -38,7 +38,7 @@ virtualenv venv
venv/bin/activate
```
接下来就可以在这个环境中安装 Flask当然如果你也可以直接选择使用下述指令直接安装Flask。
接下来就可以在这个环境中安装 Flask当然如果你也可以选择使用下述指令直接在全局环境中安装Flask。
```bash
pip install Flask
@@ -60,7 +60,7 @@ if __name__ == '__main__':
app.run()
```
运行上述代码,在浏览器中打开**localhost5000**,将显示**Hello World**消息。
运行上述代码,在浏览器中打开**localhost: 5000**,将显示**Hello World**`消息。
```python
python Hello.py
@@ -97,9 +97,9 @@ app.run(host, port, debug, options)
return 'this is response of test function.'
```
通过装饰器的方式Flask框架会将URL规则*/test*绑定到视图函数*test()*上。
通过装饰器的方式Flask框架会将URL规则<i>/test</i> 绑定到视图函数 <i>test()</i>上。
- **add_url_rule()** :该方法直接会在路由表中注册映射关系。其实*route*装饰器内部也是通过调用*add_url_rule()*方法实现的路由注册。
- **add_url_rule()** :该方法直接会在路由表中注册映射关系。其实*route*装饰器内部也是通过调用<i>add_url_rule()</i>方法实现的路由注册。
```python
def test():
@@ -124,7 +124,7 @@ def get_users():
### 2.1.2 匹配动态URL
动态URL用于当需要将*同一类\*URL映射到*同一个视图函数处理,比如,使用同一个视图函数 来显示不同用户的个人信息。那么可以将URL中的可变部分*使用一对小括号*<>声明为变量, 并为视图函数声明同名的参数:
动态URL用于当需要将*同一类URL*映射到同一个视图函数处理,比如,使用同一个视图函数 来显示不同用户的个人信息。那么可以将URL中的可变部分*使用一对小括号*<>声明为变量, 并为视图函数声明同名的参数:
```python
@app.route('/user/<uname>')
@@ -243,7 +243,7 @@ app.secret_key = '123456'
我们可以使用make_response的方法就是用来构建`response`对象的第二个参数代表响应状态码缺省就是”200”。`response`对象的详细使用可参阅Flask的[官方API文档](http://flask.pocoo.org/docs/0.10/api/#response-objects)。通过创建的`response`对象可以使用`response.set_cookie()`函数来设置Cookie项之后这个项值会被保存在浏览器中等下次请求时可以从request对象中获取到cookies对象。
由于现在前后端的交互会采用json的数据格式进行传输因此前端请求的数据是json类型的时候可以使用get_data()方法来获取。
由于现在前后端的交互会采用json的数据格式进行传输因此前端请求的数据是json类型的时候可以使用get_data()方法来获取。
```python
from flask import Flask, jsonify, request
@@ -259,7 +259,7 @@ def login():
### 2.2.2 响应对象 response
如果视图函数想向前端返回数据,必须是`Response`的对象, 主要返回数据的几种方式:
如果视图函数想向前端返回数据,必须是`Response`的对象, 主要返回数据的几种方式:
**视图函数 return 多个值**
@@ -269,11 +269,11 @@ def user_one():
return "userInfo.html", "200 Ok", {"name": "zhangsan"; "age":"20"}
```
当return多个值的时候第一个是字符串也是网页的内容"200 Ok"表示状态码及解析;{"name": "zhangsan"; "age":"20"} 表示请求头。其中前面两个值是必须要的并且顺序不能改变请求头不是必须要的这样Flask会自动将返回值转换成一个相应对象。如果返回一个字符串则Response将该字符串作为主体状态码为200然后返回该Response对象
当return多个值的时候第一个是字符串也是网页的内容"200 Ok"表示状态码及解析;{"name": "zhangsan"; "age":"20"} 表示请求头。其中前面两个值是必须要的并且顺序不能改变请求头不是必须要的这样Flask会自动将返回值转换成一个相应的Response对象。如果返回一个字符串,则返回的Response对象会将该字符串作为body,状态码为200。
**使用Response创建**
**使用Response()构造Response对象**
可以通过直接创建Response对象配置其参数。
可以使用Response()手动构造一个Response对象配置其参数后返回该对象
```python
from flask import Response
@@ -287,7 +287,7 @@ def user_one():
return response
```
**使用make_response函数**
**使用make_response函数构造Response对象**
`make_response` 函数可以传递三个参数 第一个是一个字符串,第二个传状态码,第三个传请求头。
@@ -316,7 +316,7 @@ def hot_list():
### 2.3.1重定向
当一个请求过来后可能还需要请求另一个视图函数才能达到目的,那么就可以调用`redirect(location, code=302, Response=None)`函数指定重定向页面。
当一个请求过来后可能还需要请求另一个视图函数才能达到目的,那么就可以调用`redirect(location, code=302, Response=None)`函数指定重定向页面。
```python
from flask import Flask, redirect, url_for
@@ -338,7 +338,7 @@ def index():
return redirect("/demo", 301)
```
常用重定向状态码
#### 常用重定向状态码
| 状态码 | 说明 |
| ------ | ----------------------------- |
@@ -367,7 +367,7 @@ def page_not_found(error):
## 2.4 SQLAlchemy
SQLAlchemy 是一个功能强大的Python ORM 工具包为应用程序开发人员提供了SQL的全部功能和ORM操作。其中**ORMObject Relation Mapping)**指的是将对象参数映射到底层RDBMS表结构的技术ORM API提供了执行CRUD操作的方法不需要程序员编写原始SQL语句。
SQLAlchemy 是一个功能强大的Python ORM 工具包为应用程序开发人员提供了SQL的全部功能和ORM操作。其中ORM (Object Relation Mapping)指的是将对象参数映射到底层RDBMS表结构的技术ORM API提供了执行CRUD操作的方法不需要程序员编写原始SQL语句。
### 2.4.1安装

View File

@@ -39,7 +39,7 @@ news_rec_sys/
- scheduler: 项目的定时任务的脚本部分,
- server.py: 项目后端的入口部分,主要包含项目整体的后端接口部分。
在该项目中前端主要使用的是Vue框架+mint-ui后端主要使用的是Flask+Mysql+Mongodb+Redis来完成的并且前后端采用分离的方式通过json的数据格式进行数据传递。其中该项目后端的主要逻辑在在server.py中其中主要包含用户注册登录,推荐列表,热门列表,获取新闻详情页以及用户的行为等功能。接下来将主要按照这几部分详细的介绍一下前后端如何进行交互。
在该项目中前端主要使用的是Vue框架+mint-ui后端主要使用的是Flask+Mysql+Mongodb+Redis来完成的并且前后端采用分离的方式通过json格式进行数据传递。其中该项目后端的主要逻辑在在server.py中其中主要包含用户注册登录,推荐列表,热门列表,获取新闻详情页以及用户的行为等功能。接下来将主要按照这几部分详细的介绍一下前后端如何进行交互。
@@ -76,7 +76,7 @@ def register():
return jsonify({"code": 200, "msg": "register success."})
```
可以看到上面的注册部分主要是记录一些用户的一些基础属性并将用户的注册信息写入msyql表当中。值得注意的是为了防止并发问题导致用户id出现冲负问题,因此这里采用了Twitter的雪花算法来为每个用户生成一个唯一的id。
可以看到上面的注册部分主要是记录一些用户的一些基础属性并将用户的注册信息写入msyql表当中。值得注意的是为了防止并发问题导致用户id出现冲突,这里采用了Twitter的雪花算法来为每个用户生成一个唯一的id。
**登录部分:**
@@ -113,7 +113,7 @@ def login():
### 2、推荐页列表
在项目样式展现的部分中,第一图就是推荐页列表的样式,通过瀑布流的方式将新闻内容进行展现。
在项目样式展现的部分中,第一图就是推荐页列表的样式,通过瀑布流的方式将新闻内容进行展现。
```python
@app.route('/recsys/rec_list', methods=["GET"])
@@ -442,7 +442,7 @@ def update_news_dynamic_info(self, news_id,action_type):
return res
```
上述代码主要是新闻动态特征更新的部分主要是获取redis中的信息根据前端传递过来的行为来更新对新闻属性的值。更改完之后,从新将新的结果新存储到redis中。
上述代码主要是新闻动态特征更新的部分主要是获取redis中的信息根据前端传递过来的行为来更新对新闻属性的值。更改完之后,结果新存储到redis中。