使用python/flack+ajax动态更新html站点时出现问题



我有一个带有文件dropzone的python/flask应用程序文件
上传文件后,我从另一个py文件启动一个函数
现在当文件上传到网站上时,我需要打印一个字符串
这是应用程序文件的一部分:

logger = None
@app.route('/',methods=['POST','GET'])
def upload():

if request.method == 'POST':
f = request.files.get('file')
f.save(os.path.join(app.config['UPLOADED_PATH'],f.filename))
es.main() 
global logger
logger = "something here"
return render_template('index.html', logger=logger)

这是html文件:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<script>
$(function(){
window.setInterval(funtion(),{
loadNewLogger() 
}, 100)
function loadNewLogger(){
$.ajax({
url:"/",
type: "POST",
datatype: "text",
success: function(data){
$(update_logger).replaceWith(data)
}
});
}
});

</script>
<body>
<div style="color:rgb(0, 0, 0);text-align:center"> 
NAME </div>

{{ dropzone.create(action='upload') }}
{{ dropzone.load_js() }}
{{ dropzone.config() }}

<div id="update_logger">
{{ logger }}
</div>

问题是什么都没发生。html网站显示";无";,何时应该打印";这里的东西";上传文件后。那个代码怎么了?

问题是默认情况下您的路由接受GET请求。因此,无论何时执行get,它都会直接运行return render_template('index.html', logger=logger);但是您看到,这一次它不能访问线路CCD_ 3。这意味着当有GET请求时,行永远不会被执行,因此logger的值保持为None。您可以添加一个return logger

logger = None
@app.route('/',methods=['POST','GET'])
def upload():
if request.method == 'POST':
f = request.files.get('file')
f.save(os.path.join(app.config['UPLOADED_PATH'],f.filename))
es.main() 
global logger
logger = "something here"
return logger
return render_template('index.html', logger=logger)

确保导入url_for()-from flask import url_for

最新更新