Python学习笔记-Flask实现简单的投票程序

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源码

#让我们的电脑支持服务访问,需要一个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源码

<!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>

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-14 16:34:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-14 16:34:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-14 16:34:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-14 16:34:02       20 阅读

热门阅读

  1. 第十四届蓝桥杯 三国游戏

    2024-03-14 16:34:02       21 阅读
  2. SpringMVC【框架】

    2024-03-14 16:34:02       19 阅读
  3. C 练习实例75-输入一个整数,并将其反转后输出

    2024-03-14 16:34:02       20 阅读
  4. Clickhouse数据库应用

    2024-03-14 16:34:02       18 阅读
  5. 环境安装篇 之 golang环境安装

    2024-03-14 16:34:02       21 阅读
  6. js代码新开一个浏览器窗口

    2024-03-14 16:34:02       20 阅读
  7. 【前端框架的发展史】讲解

    2024-03-14 16:34:02       19 阅读
  8. Python中的*args和**kwargs是什么,它们如何工作?

    2024-03-14 16:34:02       21 阅读
  9. CSS中display、float、position的关系

    2024-03-14 16:34:02       20 阅读
  10. scss 使用变量名注意事项

    2024-03-14 16:34:02       20 阅读