当询问时,Flask不会呈现我的修改页面

时间:2018-10-04 13:15:35

标签: python templates web flask

我有一个页面,其中包含简单的文本和按钮形式的表单

<html>
<head>
</head>
<body>
    <h1>JASON</h1>
    <form>
      <button type="submit" formmethod="POST">Activate</button>
      <br>
      <input type="hidden" value="act.12344" name="sub" />
    </form>
</body>
</html>

还有这个python脚本

from flask import Flask, render_template, request, redirect

app = Flask(__name__)

@app.route('/atdt', methods=['GET', 'POST'])
def atdt():
    if request.method == 'POST':
        print('post')
        requested = request.form['sub']
        ver = str(requested).split('.')
        if ver[0] == 'act':
            print('act')
            modif(ver[1])                        #this func modifies the index page
            return render_template('index.html')

    else:
        return render_template('index.html')

该脚本的目的是在其他地方更改jason的名称...效果很好,页面也已更改,一切都很好

但是我的flask程序不会显示它...'。html'页面已更改,如果我手动打开它,则在程序外部它会起作用!

但是,如果我给python行return render_template('index.html'),但它不会呈现它 如果我尝试手动刷新,它将仅显示旧页面

有帮助吗?

1 个答案:

答案 0 :(得分:0)

您没有修改html,您只是在调用一个返回修改后的输入版本的函数!

首先,您必须使用tempalte引擎

您的HTML应该是这样的:

<html>
<head>
</head>
<body>
    <h1>{{name}}</h1>
    <form>
      <button type="submit" formmethod="POST">Activate</button>
      <br>
      <input type="hidden" value="act.12344" name="sub" />
    </form>
</body>
</html>

您的视图应如下所示:

@app.route('/atdt', methods=['GET', 'POST'])
def atdt():
    if request.method == 'POST':
        print('post')
        requested = request.form['sub']
        ver = str(requested).split('.')
        if ver[0] == 'act':
            print('act')
            name = modif(ver[1])                        #this func modifies the index page
            return render_template('index.html', name=name)

    else:
        return render_template('index.html', name="JASON")

模板引擎将处理名称更改

Flask使用Jinja2模板引擎,您可以详细了解here