在我的烧瓶应用程序中,我导入了一个包含python变量的文件。然后我将此变量传递给html模板并使用jinja2模板在浏览器上显示它。
我在这里做的是将用户重定向到一个呈现html文件的url并将此python变量传递给jinja2模板。我使用脚本更新此文件并不时更改变量值。
当我更新模块文件并更改变量值时,我的烧瓶应用程序崩溃了。 请让我知道我做错了什么,我是网络开发的新手。另外我想知道他们是否是我们可以在Jinja2模板中导入python变量。
* Detected change in '/root/Tas/modules/steps.py', reloading
* Restarting with reloader
Traceback (most recent call last):
File "routes.py", line 45, in <module>
app.run(host='0.0.0.0', debug=True,use_reloader=True)
File "/root/Tas/venv/lib/python2.6/site-packages/flask/app.py", line 772, in run
run_simple(host, port, self, **options)
File "/root/Tas/venv/lib/python2.6/site-packages/werkzeug/serving.py", line 706, in run_simple
test_socket.bind((hostname, port))
File "<string>", line 1, in bind
socket.error: [Errno 98] Address already in use
我的代码:
from flask import Flask, render_template, request, flash, redirect, url_for
from forms import UpgradeForm
import subprocess
import os
import sys
sys.path.append('/root/Tas/modules/')
import time
import reko
import tibbr_path
import steps
app = Flask(__name__)
app.secret_key = 'development key'
@app.route('/')
def home():
return render_template('home.html')
@app.route('/upgrade', methods=['GET', 'POST'])
def upgrade():
form = UpgradeForm(request.form)
if request.method == 'POST':
if form.validate() == False:
flash('All Fields are required')
return render_template('upgrade.html', form=form)
else:
fo = open("/root/Tas/modules/reko.py", "wb")
print form.username.data
fo.write("username='%s'\npassword='%s'\npack_pack='%s'\nup_server='%s'\n" % (form.username.data, form.password.data, form.pack_pack.data, form.up_server.data))
fo.close()
return render_template('validate.html', form=form)
elif request.method == 'GET':
return render_template('upgrade.html', form=form)
@app.route('/exec_SNupgrade', methods=['GET'])
def exec_SNupgrade():
os.system("/root/Tas/scripts/int_SNupgrade.py &")
return redirect(url_for('display_step'))
)
@app.route('/display_step', methods=['GET'])
def display_step():
return render_template('display_step.html', up_server=reko.up_server, step1=steps.step1 , step2=steps.step2, step3=steps.step3, step4=steps.step4)
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True,use_reloader=True)
答案 0 :(得分:3)
如果地址已被使用,请更改默认端口
if __name__ == '__main__':
app.run(host='0.0.0.0', debug=True, port=12345, use_reloader=True)
您现在可以通过http://localhost:12345
答案 1 :(得分:0)
'已在使用的地址'表示您已在该计算机上运行另一台绑定到同一端口的服务器。把它关掉,你应该好好去。