-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.py
More file actions
120 lines (107 loc) · 3.02 KB
/
api.py
File metadata and controls
120 lines (107 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
from flask import render_template
from flask import request
from flask import redirect
from flask import url_for
from flask import Blueprint
from flask import abort
import json
from models import Weibo
from models import Comment
from user import current_user
# 创建一个 蓝图对象 并且路由定义在蓝图对象中
# 然后在 flask 主代码中「注册蓝图」来使用
# 第一个参数是蓝图的名字,第二个参数是套路
main = Blueprint('api', __name__)
# 返回给服务器的是json字符串
# /api/weibo/add
@main.route('/weibo/add', methods=['POST'])
def add():
form = request.form
u = current_user()
t = Weibo(form)
t.name = u.username
r = {
'data': []
}
if t.valid():
t.save()
r['success'] = True
r['data'] = t.json()
else:
r['success'] = False
message = t.error_message()
r['message'] = message
return json.dumps(r, ensure_ascii=False)
@main.route('/weibo/delete/<int:weibo_id>', methods=['GET'])
def delete(weibo_id):
w = Weibo.query.get(weibo_id)
w.delete()
r = {
'success': True,
'data': w.json(),
}
return json.dumps(r, ensure_ascii=False)
@main.route('/weibo/update', methods=['POST'])
def update():
form = request.form
# u = current_user()
w_id = form.get('weibo_id',-1)
print('w_id, ',w_id)
t = Weibo.query.get(w_id)
t.weibo = form.get('weibo','')
# t = Weibo(form)
# t.name = u.username
r = {
'data': []
}
if t.update_valid():
t.save()
r['success'] = True
r['data'] = t.json()
else:
r['success'] = False
message = t.error_message()
r['message'] = message
return json.dumps(r, ensure_ascii=False)
@main.route('/weibo/comment', methods=['POST'])
def comment():
form = request.form
u = current_user()
t = Comment(form)
w = Weibo.query.get(t.weibo_id)
print('w, ',w)
cn = int(len(w.comments()))
print('debug cn, ', cn)
if u is not None:
t.name = u.username
else:
t.name = ''
r = {
'data': []
}
if t.valid():
t.save()
print('debug t, ',type(t))
r['success'] = True
r['data'] = t.json()
r['cn'] = cn
else:
r['success'] = False
message = t.error_message()
r['message'] = message
return json.dumps(r, ensure_ascii=False)
# TODO
"""
2016/9/14
因为我已经强化了代码
所以作业只需要实现两个功能
1,评论
2,更新微博
实现步骤如下
1,现在 api.py 里实现 api 功能(记住返回数据的格式要和 上面的 delete add 相同)
2,在 api.js 里实现 js api 功能(调用服务器,照猫画虎)
3,给 html 页面中的相应元素绑定功能,在 weibo.js 中
4,需要注意的是页面中每个微博都要添加一个 更新微博 按钮
点击这个按钮后要 append 一个 input 一个 button
button 需要提前用事件委托绑定一个事件(用来调用 api.js 中的更新微博函数)
"""