Python flask应用程序第二次不显示生成的html文件

时间:2017-10-26 07:45:26

标签: python html flask

我有一个Python烧瓶应用程序,它接受输入id并动态生成数据到html文件中。下面是我的app.py文件。

@app.route('/execute', methods=['GET', 'POST'])
def execute():
    if request.method == 'POST':
        id = request.form['item_ids']
        list = [id]
        script_output = subprocess.Popen(["python", "Search_Script.py"] + list)
        # script_output = subprocess.call("python Search_Script.py "+id, shell=True)
        # render_template('running.html')
        script_output.communicate()
        #driver = webdriver.Chrome()
        #driver.get("home.html")
        #driver.execute_script("document.getElementById('Executed').style.display = '';")
        return render_template('execute.html')

@app.route('/output')
def output():
    return render_template('output.html')

output.html文件底部有以下代码。

<div class="container" style="text-align: center;">
        {% include 'itemSearchDetails.html' %}
</div>

每次动态生成itemSearchDetails.html都会根据输入生成。我检查不同的输入,它是完美的生成。当我第一次使用某些输入(假定为2)值运行它时,它会完美运行并正确显示输出。但是,当我下次运行不同的值(假设为4)时,将为这4个值生成文件'itemSearchDetails.html',但浏览器仅显示前2个值的输出。无论我运行多少次,浏览器都只显示带有第一个运行值的输出。

因此,无论我跑多少次,每次只显示第一个输入值。我不确定它是否是浏览器缓存问题,因为我尝试在chrome中“禁用缓存”。它仍然没有用。如果我遗失了某些东西,请告诉我。

2 个答案:

答案 0 :(得分:0)

尝试this answer的解决方案:

参数TEMPLATES_AUTO_RELOAD

  

是否检查模板源的修改并重新加载   它自动。默认情况下,该值为None,表示Flask   仅在调试模式下检查原始文件。

可以找到原始文档here

答案 1 :(得分:0)

看起来Jinja正在缓存include d模板。

如果您不需要将HTML解释为Jinja模板,而只是按原样包含其内容,请首先阅读该文件并将内容传递到模板中:

with open('itemSearchDetails.html', 'r') as infp:
    data = infp.read()
return render_template('execute.html', data=data)

...

{{ data|safe }}

(如果您确实需要将HTML页面解释为Jinja(如include所示),则可以从Template解析一个Jinja data,然后使用include用该动态编译的模板标记。)