小项目练习02-抽奖系统

抽奖系统练习

环境准备
  1. 安装flask框架

    pip install flask

  2. 数据准备

    hero_list = ['黑暗之女', '狂战士', '正义巨像', '卡牌大师', '德邦总管', '无畏战车', '诡术妖姬',
            '猩红收割者', '远古恐惧', '正义天使', '无极剑圣', '牛头酋长', '符文法师',
            '亡灵战神', '战争女神', '众星之子', '迅捷斥候', '麦林炮手', '祖安怒兽']
    
代码实现
  1. 抽奖一般都是在web端执行的,因此首先需要创建一个web服务,以便于执行

    # 导入框架,准备启动web服务
    from flask import Flask
    
    # 创建一个服务对象
    app = Flask(__name__)
    
    # 创建运行服务
    app.run(debug=True)
    
    # 执行结果
    * Serving Flask app 'demo'
    * Debug mode: on
    WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
     * Running on http://127.0.0.1:5000
    Press CTRL+C to quit
     * Restarting with stat
     * Debugger is active!
     * Debugger PIN: xxx
    
  2. 复制http://127.0.0.1:5000此内容,即可访问本地服务

  3. 抽奖内容实现

    # 创建一个路由,是的web端可以访问到
    @app.route('/index')
    def index():
        # 创建一个随机数,以便获取到hero_list中的名称
        # 注:这里的len() - 1是为了防止访问列表过程中,超过列表的长度而导致程序报错
        num = random.randint(0, len(hero__list) - 1)
        # 使用flask中自带的render_template方法,返回一个index.html页面,并把数据交给前端页面
        return render_template('index.htmml', hero=hero, h=hero_list[num])
    
  4. 此时,后端数据已经准备好了,但是执行后会发现,前端页面什么显示都没有,这是因为,我们需要在同级下创建有一个 前端页面的模板,否则render_template这个方法找不到模板,会报错

    <!-- 创建一个前端页面模板,用来接后端数据 -->
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div>
        {{hero}}</br>
        <a href="/index">随机选取一个名字</a>
        <p>您抽到了: {{h}}</p>
    </div>
    </body>
    </html>
    
完整代码
# demo.py
from flask import Flask, render_template
from random import randint

app = Flask(__name__)

hero_list = ['黑暗之女', '狂战士', '正义巨像', '卡牌大师', '德邦总管', '无畏战车', '诡术妖姬',
        '猩红收割者', '远古恐惧', '正义天使', '无极剑圣', '牛头酋长', '符文法师',
        '亡灵战神', '战争女神', '众星之子', '迅捷斥候', '麦林炮手', '祖安怒兽']

@app.route('/index')
def index():
    num = randint(0, len(hero_list) - 1)
    
    return render_template('index.htmml', hero=hero_list, h=hero_list[num])
    
<!--templates/index.html-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    {{hero}}</br>
    <a href="/index">随机选取一个名字</a>
    <p>您抽到了: {{h}}</p>
</div>
</body>
</html>
posted on 2025-06-23 16:11  小小荞麦片  阅读(36)  评论(0)    收藏  举报