您好我正在使用Python Flask建立一个网站。
我需要在我构建的烧瓶网中渲染大约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)
虽然似乎没有工作.... 请帮帮我。
答案 0 :(得分:1)
首先,不要为每个自动收报机制作路线,而是考虑参数化路线,如:
$cities = explode(',', $item_coverage);
if(in_array($user_location, $cities)){
// the city the user filled exist in the database
} else {
// the city the user filled don't exist in the database
}
除此之外,为什么每个自动收报机制作一个页面?当您想要查看其他股票时,这会强制您的浏览器重新呈现所有内容......
您可以考虑使用前端框架,例如:Google Polymer或React。将数据动态绑定到页面(前端MVC模型)
如果没有,您仍然可以使用jQuery DOM操作和AJAX请求创建SPA(单页面应用程序)。