Skip to content

Commit 142eaff

Browse files
author
PedroGao
committed
optimize: 完善一些信息和格式
1 parent dcb062f commit 142eaff

4 files changed

Lines changed: 97 additions & 88 deletions

File tree

app/config/setting.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@
1616
# plugin config写在字典里面
1717
PLUGIN_PATH = {
1818
'oss': {'path': 'app.plugins.oss', 'enable': True, 'upload_folder': 'app/static'},
19-
'poem': {'path': 'app.plugins.poem', 'enable': True},
19+
'poem': {'path': 'app.plugins.poem', 'enable': True, 'limit': 5},
2020
}

app/plugins/oss/info.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
__version__ = '0.0.1'
2+
__author__ = 'Lin team'

app/plugins/poem/README.md

Lines changed: 66 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# 插件demo(古诗展示插件:poem)
1+
# 插件 demo(古诗展示插件:poem)
22

3-
> 在大家已经了解了插件机制后,我们按照插件开发规范开发了一个古诗展示插件,在这个demo中,你会学习到一个简单插件的整个开发流程和注意事项
3+
> 在大家已经了解了插件机制后,我们按照插件开发规范开发了一个古诗展示插件,在这个 demo 中,你会学习到一个简单插件的整个开发流程和注意事项
44
55
### 插件目录结构
66

@@ -17,7 +17,9 @@
1717
```
1818

1919
## 定义路由
20+
2021
首先我们在控制层文件`controller.py`中定义一个红图,并且定义两个视图函数
22+
2123
```python
2224
from flask import jsonify
2325
from lin.redprint import Redprint
@@ -42,7 +44,9 @@ def search():
4244
```
4345

4446
## 定义数据库模型类
47+
4548
`poem`插件的实现的业务需要依托数据库,所以我们下面需要在模型层文件设计一个名为`Poem`的模型类
49+
4650
```python
4751
from lin.interface import InfoCrud as Base
4852
from sqlalchemy import Column, String, Integer
@@ -54,12 +58,14 @@ class Poem(Base):
5458
author = Column(String(50), default='未名', comment='作者')
5559
dynasty = Column(String(50), default='位置', comment='朝代')
5660
content = Column(String(255), nullable=False, comment='内容')
57-
61+
5862
...
5963
```
6064

6165
## 定义数据校验类
66+
6267
当我们需要校验用户传递过来的参数时,别忘了数据校验层的存在,我们在`forms.py`中定义一个简单的数据校验类`PoemSearchForm`。并在视图函数中调用。
68+
6369
```python
6470
from lin.forms import Form
6571
from wtforms import StringField
@@ -74,13 +80,16 @@ class PoemSearchForm(Form):
7480
```
7581

7682
## 导出文件
77-
基本业务逻辑已经实现,最关键的一步还要导出文件,也就是在`poem/app/__init__.py`中写入要被Lin的加载器自动加载的红图api和数据模型类
83+
84+
基本业务逻辑已经实现,最关键的一步还要导出文件,也就是在`poem/app/__init__.py`中写入要被 Lin 的加载器自动加载的红图 api 和数据模型类
85+
7886
```python
7987
from .controller import api
8088
from .model import Poem
8189
```
8290

8391
## 用配置开启插件
92+
8493
> 最后,在`app/config/setting.py`中添加如下配置:
8594
8695
```python
@@ -90,9 +99,11 @@ PLUGIN_PATH = {
9099
'poem': {'path': 'app.plugins.poem', 'enable': True},
91100
}
92101
```
102+
93103
对于该配置项的含义,已经在[插件使用]一小节详细介绍。
94104

95-
至此,这个简单插件的开发已经完成了。运行项目,我们会发现收据库中会出现我们所创建的poem表。下面请打开fake.py,替换成下面的代码并执行,向表中添加一些初始数据。
105+
至此,这个简单插件的开发已经完成了。运行项目,我们会发现收据库中会出现我们所创建的 poem 表。下面请打开 fake.py,替换成下面的代码并执行,向表中添加一些初始数据。
106+
96107
```python
97108
from app.app import create_app
98109
from app.plugins.poem.app.model import Poem
@@ -131,64 +142,70 @@ with app.app_context():
131142
db.session.add(poem4)
132143
```
133144

134-
## 用postman调试接口
145+
## 用 postman 调试接口
135146

136147
### 获取所有诗词
137-
URL
138-
>GET http://localhost:5000/plugin/poem/demo/all
148+
149+
URL
150+
151+
> GET http://localhost:5000/plugin/poem/demo/all
139152
140153
Response 200:
154+
141155
```json
142156
[
143-
{
144-
"author": "李白",
145-
"content": "危楼高百尺,手可摘星辰。不敢高声语,恐惊天上人。",
146-
"create_time": 1548422493000,
147-
"dynasty": "唐代",
148-
"id": 1,
149-
"title": "夜宿山寺"
150-
},
151-
{
152-
"author": "刘禹锡",
153-
"content": "常恨言语浅,不如人意深。今朝两相视,脉脉万重心。",
154-
"create_time": 1548422493000,
155-
"dynasty": "唐代",
156-
"id": 2,
157-
"title": "视刀环歌"
158-
},
159-
{
160-
"author": "龚自珍",
161-
"content": "浩荡离愁白日斜,吟鞭东指即天涯。落红不是无情物,化作春泥更护花。",
162-
"create_time": 1548422493000,
163-
"dynasty": "清代",
164-
"id": 3,
165-
"title": "己亥杂诗 · 其五"
166-
},
167-
{
168-
"author": "温庭筠",
169-
"content": "井底点灯深烛伊,共郎长行莫围棋。玲珑骰子安红豆,入骨相思知不知。",
170-
"create_time": 1548422493000,
171-
"dynasty": "唐代",
172-
"id": 4,
173-
"title": "杨柳枝"
174-
}
157+
{
158+
"author": "李白",
159+
"content": "危楼高百尺,手可摘星辰。不敢高声语,恐惊天上人。",
160+
"create_time": 1548422493000,
161+
"dynasty": "唐代",
162+
"id": 1,
163+
"title": "夜宿山寺"
164+
},
165+
{
166+
"author": "刘禹锡",
167+
"content": "常恨言语浅,不如人意深。今朝两相视,脉脉万重心。",
168+
"create_time": 1548422493000,
169+
"dynasty": "唐代",
170+
"id": 2,
171+
"title": "视刀环歌"
172+
},
173+
{
174+
"author": "龚自珍",
175+
"content": "浩荡离愁白日斜,吟鞭东指即天涯。落红不是无情物,化作春泥更护花。",
176+
"create_time": 1548422493000,
177+
"dynasty": "清代",
178+
"id": 3,
179+
"title": "己亥杂诗 · 其五"
180+
},
181+
{
182+
"author": "温庭筠",
183+
"content": "井底点灯深烛伊,共郎长行莫围棋。玲珑骰子安红豆,入骨相思知不知。",
184+
"create_time": 1548422493000,
185+
"dynasty": "唐代",
186+
"id": 4,
187+
"title": "杨柳枝"
188+
}
175189
]
176190
```
177191

178192
### 按标题搜索诗词
193+
179194
URL
180-
>GET http://localhost:5000/plugin/poem/demo/search?q=<string>
195+
196+
> GET http://localhost:5000/plugin/poem/demo/search?q=<string>
181197
182198
Response 200:
199+
183200
```json
184201
[
185-
{
186-
"author": "龚自珍",
187-
"content": "浩荡离愁白日斜,吟鞭东指即天涯。落红不是无情物,化作春泥更护花。",
188-
"create_time": 1548422493000,
189-
"dynasty": "清代",
190-
"id": 3,
191-
"title": "己亥杂诗 · 其五"
192-
}
202+
{
203+
"author": "龚自珍",
204+
"content": "浩荡离愁白日斜,吟鞭东指即天涯。落红不是无情物,化作春泥更护花。",
205+
"create_time": 1548422493000,
206+
"dynasty": "清代",
207+
"id": 3,
208+
"title": "己亥杂诗 · 其五"
209+
}
193210
]
194211
```

fake.py

Lines changed: 28 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,47 +4,37 @@
44
"""
55

66
from app.app import create_app
7-
from app.models.book import Book
7+
from app.plugins.poem.app.model import Poem
88
from lin.db import db
9-
from lin.core import User
109

1110
app = create_app()
1211
with app.app_context():
1312
with db.auto_commit():
14-
# 创建一个超级管理员
15-
user = User()
16-
user.nickname = 'super'
17-
user.password = '123456'
18-
user.email = '12345678@qq.com'
19-
user.super = 2
20-
db.session.add(user)
21-
# 添加书籍
22-
book1 = Book()
23-
book1.title = '深入理解计算机系统'
24-
book1.author = 'Randal E.Bryant'
25-
book1.summary = '''
26-
从程序员的视角,看计算机系统!\n
27-
本书适用于那些想要写出更快、更可靠程序的程序员。
28-
通过掌握程序是如何映射到系统上,以及程序是如何执行的,读者能够更好的理解程序的行为为什么是这样的,以及效率低下是如何造成的。
29-
粗略来看,计算机系统包括处理器和存储器硬件、编译器、操作系统和网络互连环境。
30-
而通过程序员的视角,读者可以清晰地明白学习计算机系统的内部工作原理会对他们今后作为计算机科学研究者和工程师的工作有进一步的帮助。
31-
它还有助于为进一步学习计算机体系结构、操作系统、编译器和网络互连做好准备。\n
32-
本书的主要论题包括:数据表示、C程序的机器级表示、处理器结构,程序优化、存储器层次结构、链接、异常控制流、虚拟存储器和存储器管理、系统级I/O、网络编程和并发编程。书中所覆盖的内容主要是这些方面是如何影响应用和系统程序员的。
33-
'''
34-
book1.image = 'https://img3.doubanio.com/lpic/s1470003.jpg'
35-
db.session.add(book1)
13+
# 添加诗歌
14+
poem1 = Poem()
15+
poem1.title = '夜宿山寺'
16+
poem1.author = '李白'
17+
poem1.dynasty = '唐代'
18+
poem1.content = '危楼高百尺,手可摘星辰。不敢高声语,恐惊天上人。'
19+
db.session.add(poem1)
3620

37-
book2 = Book()
38-
book2.title = 'C程序设计语言'
39-
book2.author = '(美)Brian W. Kernighan'
40-
book2.summary = '''
41-
在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛。
42-
本书原著即为C语言的设计者之一Dennis M.Ritchie和著名计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。
43-
我们现在见到的大量论述C语言程序设计的教材和专著均以此书为蓝本。
44-
原著第1版中介绍的C语言成为后来广泛使用的C语言版本——标准C的基础。
45-
人们熟知的“hello,World"程序就是由本书首次引入的,现在,这一程序已经成为众多程序设计语言入门的第一课。\n
46-
原著第2版根据1987年制定的ANSIC标准做了适当的修订.引入了最新的语言形式,并增加了新的示例,通过简洁的描述、典型的示例,作者全面、系统、准确地讲述了C语言的各个特性以及程序设计的基本方法。
47-
对于计算机从业人员来说,《C程序设计语言》是一本必读的程序设计语 言方面的参考书。
48-
'''
49-
book2.image = 'https://img3.doubanio.com/lpic/s1106934.jpg'
50-
db.session.add(book2)
21+
poem2 = Poem()
22+
poem2.title = '视刀环歌'
23+
poem2.author = '刘禹锡'
24+
poem2.dynasty = '唐代'
25+
poem2.content = '常恨言语浅,不如人意深。今朝两相视,脉脉万重心。'
26+
db.session.add(poem2)
27+
28+
poem3 = Poem()
29+
poem3.title = '己亥杂诗 · 其五'
30+
poem3.author = '龚自珍'
31+
poem3.dynasty = '清代'
32+
poem3.content = '浩荡离愁白日斜,吟鞭东指即天涯。落红不是无情物,化作春泥更护花。'
33+
db.session.add(poem3)
34+
35+
poem4 = Poem()
36+
poem4.title = '杨柳枝'
37+
poem4.author = '温庭筠'
38+
poem4.dynasty = '唐代'
39+
poem4.content = '井底点灯深烛伊,共郎长行莫围棋。玲珑骰子安红豆,入骨相思知不知。'
40+
db.session.add(poem4)

0 commit comments

Comments
 (0)