HTML中的标记专门用于运行客户端JavaScript代码。后端逻辑应该在视图中完成。如果您只是想执行myfile.py中存在的一行代码,则应该将其放入该文件的某个函数中,并使用from myfile import functionname导入它,或者只是在视图中存在该代码(后者是正确的方式在大多数情况下)。例如,如果myfile.py包含print 'Hello World!'那么你的观点应该是这样的:
from flask import *
from functools import wraps
import sqlite3
app = Flask(__name__)
@app.route('/')
def home():
return render_template('home.html')
@app.route('/generate')
def generate():
print 'Hello World!'
return render_template('process.html')
如果你这样做了,你就不必了拆分所有代码到单独的文件。不幸的是,模板会在代码执行后呈现,因此您的process.html模板中显示的“正在处理...”会在处理完毕后显示。至于瓶去,我所知道的最好的方式来显示该过程发生将重定向回页面和闪烁的消息,这样用户:
@app.route('/generate')
def generate():
print 'Hello World!'
flash('Process complete!')
return redirect(url_for(home))
,然后在home.html你有这样的事情(从Flask 0.11 Documentation):
{% extends "template.html" %}
{% block content %}
Home
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
{{ message }}{% endfor %}
{% endif %}
{% endwith %}
lorem epsum
{% endblock %}
如果你想要的东西,像“处理...”,以显示在页面上,这时候你会想使用JavaScript。
希望这有助于:)