小项目练习02-抽奖系统
抽奖系统练习
环境准备
-
安装flask框架
pip install flask
-
数据准备
hero_list = ['黑暗之女', '狂战士', '正义巨像', '卡牌大师', '德邦总管', '无畏战车', '诡术妖姬', '猩红收割者', '远古恐惧', '正义天使', '无极剑圣', '牛头酋长', '符文法师', '亡灵战神', '战争女神', '众星之子', '迅捷斥候', '麦林炮手', '祖安怒兽']
代码实现
-
抽奖一般都是在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 -
复制http://127.0.0.1:5000此内容,即可访问本地服务
-
抽奖内容实现
# 创建一个路由,是的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]) -
此时,后端数据已经准备好了,但是执行后会发现,前端页面什么显示都没有,这是因为,我们需要在同级下创建有一个 前端页面的模板,否则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>
浙公网安备 33010602011771号