您好,我正在使用 Python Flask 构建一个网站。
我需要在我构建的 Flask Web 中渲染大约 5000 个 html 页面,我的方法如下。 所以,我的网站是关于股票市场的,我想为每个公司渲染一个 html 页面。我的做法是定义每个公司页面并呈现具有不同内容的相同 html 文件。这样,我不需要制作5,000个不同的html文件,但我需要定义5,000个不同的@app.route,如下所示。我想知道是否有更聪明的方法来做到这一点。
@app.route('/analytics/signals/aapl')
def analytics_signals_aapl_page():
all_ticker = full_list
ticker_name = com_name
ticker = 'AAPL'
return render_template('company.html', all_ticker=all_ticker, ticker_name=ticker_name, ticker=ticker)
@app.route('/analytics/signals/ddf')
def analytics_signals_ddf_page():
all_ticker = full_list
ticker_name = com_name
ticker = 'DDF'
return render_template('company.html', all_ticker=all_ticker, ticker_name=ticker_name, ticker=ticker)
@app.route('/analytics/signals/aey')
def analytics_signals_aey_page():
all_ticker = full_list
ticker_name = com_name
ticker = 'AEY'
return render_template('company.html', all_ticker=all_ticker, ticker_name=ticker_name, ticker=ticker)
这是company.html文件的一部分,其中根据Python中每个页面定义中的变量放置不同的内容。
<section style="margin-top: 0px; background-color: #E6E6FA; padding: 0px; width:100%;">
<div class="container">
<h1 style="margin-top:10px; font-size: 25px;">{{ all_ticker[ticker_name[ticker]].split(':')[1] }} </h1>
<p style="margin-top: -5px; margin-left: 2px; color:#9932CC; font-size: 10px;">Ticker: {{ all_ticker[ticker_name[ticker]].split(':')[0] }}, Sector: {{ all_ticker[ticker_name[ticker]].split(':')[2] }}, Industry: {{ all_ticker[ticker_name[ticker]].split(':')[3] }}</p>
</div>
如果您知道任何更聪明的方法来做到这一点,请告诉我。我很感激。谢谢!
我尝试过的东西如下:
ticker_list = ['company1','company2','company3','company4','company5', ......'company5000']
for i in ticker_list:
@app.route('analytics/signals/%s'.format(i))
def analytics_signals_aapl_page():
all_ticker = full_list
ticker_name = com_name
ticker = i
return render_template('company.html', all_ticker=all_ticker, ticker_name=ticker_name, ticker=ticker)
不过好像没啥用…… 请帮助我。
最佳答案
首先,不要为每个代码创建一条路线,而是考虑参数化路线,例如:
@app.route('/analytics/signals/<ticker_url>')
def analytics_signals_aapl_page(ticker_url):
all_ticker = full_list
ticker_name = com_name
ticker = ticker_url.upper()
return render_template('company.html', all_ticker=all_ticker, ticker_name=ticker_name, ticker=ticker)
除此之外,为什么要为每个股票创建一个页面?当您想查看不同的股票时,这会迫使您的浏览器重新渲染所有内容...
您可以考虑使用前端框架,例如:Google Polymer ,或React 。将数据动态绑定(bind)到页面(前端 MVC 模型)
如果没有,您仍然可以使用 jQuery DOM 操作和 AJAX 请求创建 SPA(单页应用程序)。
关于javascript - 在Python中使用for循环编写多个html文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43193541/