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:
@@ -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>`** 元素定义一个段落
|
||||
|
||||

|
||||
|
||||
@@ -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 将要被更新之前访问它,比如移除手动添加的事件监听器。可以在该钩子中进一步地更改状态,不会触发附加的重渲染过程.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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()
|
||||
```
|
||||
|
||||
运行上述代码,在浏览器中打开**localhost:5000**,将显示**“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操作。其中**ORM(Object Relation Mapping)**指的是将对象参数映射到底层RDBMS表结构的技术,ORM API提供了执行CRUD操作的方法,不需要程序员编写原始SQL语句。
|
||||
SQLAlchemy 是一个功能强大的Python ORM 工具包,为应用程序开发人员提供了SQL的全部功能和ORM操作。其中ORM (Object Relation Mapping)指的是将对象参数映射到底层RDBMS表结构的技术,ORM API提供了执行CRUD操作的方法,不需要程序员编写原始SQL语句。
|
||||
|
||||
### 2.4.1安装
|
||||
|
||||
|
||||
@@ -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中。
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user