我在root路由中渲染了我的模板,我希望在第二个路径中使用post方法重定向到我的根路由。问题是我无法在我的第二条路线中更改我在模板中设置的变量。
编辑: 我想到了。我需要将我的显示更改为session以在我执行post方法后继续进行,并且我将表单恢复为unicode,因此我必须将其放在int()中。
Python:
from flask import Flask, render_template, request, redirect, session
import random
app = Flask(__name__)
app.secret_key = 'ThisIsSecret'
@app.route('/')
def index():
try:
session['counter'] += 1
except KeyError:
session['counter'] = 1
if session['counter'] == 1:
session['randnum'] = random.randint(1,100)
return render_template('index.html')
@app.route('/play', methods=['POST'])
def guess():
if int(request.form['guess']) == session['randnum']:
session['display'] = 'You Win'
elif int(request.form['guess']) > session['randnum']:
session['display'] = 'Too High'
elif int(request.form['guess']) < session['randnum']:
session['display'] = 'Too Low'
else:
session['display'] = 'Does not recognize that input, try a number.'
return redirect('/')
app.run(debug=True)
HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>The Great Number Game!</title>
<style type="text/css">
#body{
text-align:center;
padding-top:200px;
}
</style>
</head>
<body id='body'>
<h1>The Great Number Game!</h1>
<p>I am thinking of a number between 1-100</p>
<p>Take a guess:</p>
<p>{{ session['display'] }}<p>
<form class="abc" action="/play" method="POST">
<p><input type="number" name="guess" value=" "></p>
<p><input type="submit" name= "submit" value="submit"></p>
</form>
{{session['randnum']}}
</body>
</html>