首页 > 解决方案 > 如何在 Flask 中选择按钮后正确触发 random.choice()?

问题描述

我是一名初学者 python 学生,我试图建立一个只有一个按钮的网站,每次单击它时都会弹出一个新窗口,其中包含一个随机的 Flash 游戏。

现在,我的按钮正在工作,但它总是打开同一个 Flash 游戏,只有当我刷新页面并再次单击时,它才会加载一个新游戏。

有人可以向我解释发生了什么问题,我该如何解决?:)

在此之前,我抓取了一篇文章,其中包含大约 150 个指向 Flash 游戏的链接,这些游戏现在位于 .txt 文件中,例如:

http://www.tapeonline.com/snowball/

http://www.gamesforwork.com/games/play-4626-Necrathalon-Flash_Game

http://www.adobe.com/macromedia/holiday2004/

http://www.kongregate.com/games/arawkins/dolphin-olympics-2

这是我的代码:
烧瓶

from flask import Flask, render_template, request, redirect
import random

app = Flask(__name__)


@app.route("/" , methods=['POST','GET'])
def home():
    if request.method == 'POST':
        return redirect("/")
    else: 
        a = open('gamelinks.txt','r')
        b = a.read().split()
        a.close()
        return render_template('index.html', game=random.choice(b))


if __name__ == '__main__':
    app.run(debug=True)

html:

{% extends "base.html" %}
{%block head %}

{% endblock %}
<title>FLASHER</title>
{% block body %}


<form action = '{{ game }}' method='POST' target="_blank">
    <input type='submit', name='submit', id='submit', value='Play Game'>
</form>


{% endblock %}

标签: pythonhtmlpython-3.xwebflask

解决方案


问题是它只随机选择一次。当您加载页面时,随机值被分配给游戏变量,并且在您刷新页面之前一直保持这种状态。提交表单后,您可能希望使用 JS 刷新页面: https ://www.w3schools.com/jsref/event_onclick.asp


推荐阅读