Python / Flask如何从第二条路径更改根路由上的变量

时间:2017-04-06 21:12:28

标签: python flask

我在root路由中渲染了我的模板,我希望在第二个路径中使用post方法重定向到我的根路由。问题是我无法在我的第二条路线中更改我在模板中设置的变量。

所以我想在执行POST方法后更改html {{display}}中的变量显示。

编辑: 我想到了。我需要将我的显示更改为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>

0 个答案:

没有答案