使用for循环在Python中编写多个html文件

时间:2017-04-03 20:19:27

标签: javascript python html flask

您好我正在使用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)

虽然似乎没有工作.... 请帮帮我。

1 个答案:

答案 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 PolymerReact。将数据动态绑定到页面(前端MVC模型

如果没有,您仍然可以使用jQuery DOM操作和AJAX请求创建SPA(单页面应用程序)。