1.导入flask包
from flask import Flask,jsonify,abort,make_response,request,render_template
2.初始化 Flask 应用:
app = Flask(__name__)
3. 定义投票种类
data = [
{'id':0,'name':'劳动节','num':0},
{'id':1,'name':'国庆节','num':0},
{'id':2,'name':'春节','num':0}
]
4.@app.route('/index')
: 定义一个路由,当用户访问 /index
路径时,会执行下面的 index
函数。返回名为 index.html
的模板,并传递一个名为 data
的变量。
@app.route('/index')
def index():
return render_template('index.html',data=data)
5.@app.route('/dianzan')
: 定义另一个路由,用于处理点赞功能,用户可以通过此路由向服务器发送请求,为某个特定的 id
点赞。接收一个 id
参数(从请求的查询参数中获取),并尝试增加 data
中对应 id
的 'num'
键的值(模拟点赞操作)。然后,它返回 index.html
模板并传递更新后的 data
。
@app.route('/dianzan')
def dianzan():
id = request.args.get('id')
print(f'想要给{id}点赞!!')
data[int(id)]['num'] +=1
return render_template('index.html', data=data)
@app.route('/quxiaodianzan')
: 定义第三个路由,用于处理取消点赞功能,用户可以通过此路由向服务器发送请求,取消对某个特定 id
的点赞。def quxiaodianzan()
: 类似于 dianzan
函数,但它用于减少 data
中对应 id
的 'num'
键的值(模拟取消点赞操作)。
@app.route('/quxiaodianzan')
def quxiaodianzan():
id = request.args.get('id')
print(f'不想要给{id}点赞!!')
if data[int(id)]['num'] >0:
data[int(id)]['num'] -=1
return render_template('index.html', data=data)
5.启动 Flask 应用,并启用调试模式
app.run(debug=True)
6.创建index.html
7.python源码
python
#让我们的电脑支持服务访问,需要一个web框架flask
import requests
from flask import Flask,jsonify,abort,make_response,request,render_template
app = Flask(__name__)
data = [
{'id':0,'name':'劳动节','num':0},
{'id':1,'name':'国庆节','num':0},
{'id':2,'name':'春节','num':0}
]
@app.route('/index')
def index():
return render_template('index.html',data=data)
@app.route('/dianzan')
def dianzan():
id = request.args.get('id')
print(f'想要给{id}点赞!!')
data[int(id)]['num'] +=1
return render_template('index.html', data=data)
# return '点赞成功!!!'
@app.route('/quxiaodianzan')
def quxiaodianzan():
id = request.args.get('id')
print(f'不想要给{id}点赞!!')
if data[int(id)]['num'] >0:
data[int(id)]['num'] -=1
return render_template('index.html', data=data)
app.run(debug=True)
8.html源码
html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>这是一个点赞系统</h1>
<table border="1">
<tr>
<td>id</td>
<td>节日</td>
<td>点赞数</td>
<td colspan="2" align="center">操作</td>
<!-- <td>操作</td>-->
</tr>
{%for i in data %}
<tr>
<td>{{ i.id }}</td>
<td>{{ i.name }}</td>
<td>{{ i.num }}</td>
<td><a href="/dianzan?id={{ i.id }}">点赞</a></td>
<td><a href="/quxiaodianzan?id={{ i.id }}">取消点赞</a></td>
</tr>
{% endfor %}
</table>
</body>
</html>