首页 > 编程语言 >Python学习笔记-Flask实现简单的投票程序

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

时间:2024-03-13 11:31:48浏览次数:25  
标签:index Python app 笔记 Flask num 点赞 data id

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)

[email protected]('/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>

标签:index,Python,app,笔记,Flask,num,点赞,data,id
From: https://blog.csdn.net/2301_77321248/article/details/136674683

相关文章

  • C#集合和数据结构,随笔记录
    C#集合和数据结构System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表/链表、位数组、哈希表、队列和堆栈)的集合            System.Collections.Generic命名空间:所有集合都直接或间接基于ICollection接口列表类集合类型:集合类型基......
  • python_base
    python基础输入输出print(self,*args,sep='',end='\n',file=None)变量python中同一个字符串重复使用,分配的内存地址相同。del删除变量python可以直接交换变量的值,实际是交换变量的地址。多个变量赋相同值对应相同地址,修改其中一个变量内容不影响其它变量的值。标......
  • C语言自学笔记4----C语言存储类
    C语言存储类存储类定义C程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出C程序中可用的存储类:autoregisterstaticexternauto存储类auto存储类是所有局部变量默认的存储类。{intmount;autointmonth;}上面的示......
  • Python 爬虫零基础教程(1):爬单个图片
    代码:importrequestsurl='https://cdn.pixabay.com/photo/2018/01/04/07/59/salt-3060093_960_720.jpg'data=requests.get(url).contentf=open('1.jpg','wb')f.write(data)f.close()print('OK')解释代码变量代码中的ur......
  • 【python】生成对数正态分布样本并画出PDF和CDF图
    """CreatedonTueMar1222:09:092024@author:zhang"""importnumpyasnpfromscipyimportstatsimportmatplotlib.pyplotaspltmean,std=1,0.3sample_size=2000#logNormdistributionsamples=np.exp(stats.norm.rvs(me......
  • 从入门到入魔,100个Python实战项目练习(附答案)!
    大家好,我是彭涛。之前给大家整理的资料,都是理论性的,虽然每一个知识点都给出了对应的示例代码,但是好多人还是感觉有一点点杂乱,如果有系统的实战项目练习就好了。所以,应大家的需求,我们为大家搜集了一份Python从入门到进阶的实战案例合集,总共100个,70多页。资料内容不仅给......
  • Python 分析— 使用 LeuvenMapMatching 包进行地图匹配用于道路导航
        在道路导航中,我们有了街道网络地图。轨迹/GPS数据必须与街道相匹配才能进行导航,因为GPS读数提供纯粹的纬度和经度坐标,但我们想知道车辆行驶的具体道路。        我首先尝试了一种简单的方法来匹配点,将每个点独立地匹配到最近的路段。如果没有道路,只需......
  • 20个Python random模块的代码示例
    本文分享自华为云社区《Python随机数探秘:深入解析random模块的神奇之处》,作者:柠檬味拥抱。标准库random函数大全:探索Python中的随机数生成随机数在计算机科学和数据科学领域中扮演着重要角色,Python的标准库中提供了random模块,用于生成各种随机数。本篇博客将深入探讨random模块......
  • python软件安装
    WelcometoPython.org一:打开这个网址(如下图所示)二:点击下方图标将会跳转到下面这个页面三:将页面翻到下图位置随便选择一个版本下载即可(尽量选择低于最新版本的几个版本)四:安装这个软件在cmd里面,输入python,出来这个结果,即为安装成功......
  • 【算法训练营】最长公共子序列,倒水问题,奶牛吃草(Python实现)
    最长公共子序列时间限制:1sec空间限制:256MB问题描述给定两个1到n的排列A,B(即长度为n的序列,其中[1,n]之间的所有数都出现了恰好一次)。求它们的最长公共子序列长度。输入格式第一行一个整数n,意义见题目描述。第二行n个用空格隔开的正整数A[1],…,......