我有一个页面,其中包含简单的文本和按钮形式的表单
<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')
,但它不会呈现它
如果我尝试手动刷新,它将仅显示旧页面
有帮助吗?
答案 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