请考虑以下事项:
我正在使用python为我的家人制作一个秘密的圣诞老人脚本,虽然我已经想出如何绘制名称(见下面的代码),但我只需要执行一次。我打算使用烧瓶框架来创建一个页面倒计时直到抽奖(我已经想到了),但我怎么做它所以它只做一次抽奖,而不是每次都有人登录到该页面?明白我的意思?
无论如何,我会在这里向你展示我的代码:
# imports & initial Flask set up above
def do_matchup(names, draw, matches=None):
if matches is None:
matches = []
while names:
member = names.pop()
recipient = choice(draw)
if recipient != member:
matches.append("%s=%s" % (member, recipient))
draw.remove(recipient)
else:
names.append(member)
return matches
@app.route("/")
def index():
now = dt.datetime.now()
draw_date = dt.datetime.strptime('10/1/2013', '%m/%d/%Y')
days = draw_date - now
family = ["member1", "member2", "member3", "member4", "member5", "Me"]
hat_names = [name for name in family]
matchup = do_matchup(family, hat_names)
return render_template("base.html", now=now,
draw_date=draw_date,
days=days,
matchup=matchup)
模板是一个基本的html页面,上面写着{%if now< draw_date%}“在绘制之前有x天的天数”,{%else%}“显示绘制结果”。
每次加载页面时,都会进行新的绘制。我如何做到这一点,它只是绘制一次,而不是给每个家庭成员不同的结果?
答案 0 :(得分:2)
如果您没有使用数据库而只需要少量保存的结果,那么您可以将匹配文件挑选出来。然后在索引中只检查文件是否存在,如果存在,则读取该文件并返回该匹配项。否则,您将生成一个新的比赛,保存并返回结果。
答案 1 :(得分:1)
你需要有一个独立的方式来运行shuffle - 例如通过访问特定页面。该代码还应该将shuffle保存到数据库中。另一种方法是检查当前年份是否已经有一个shuffle,并且只有在没有的情况下才会生成并保存。
从根本上说,答案是将你的洗牌保存在例如:数据库。