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

标签 javascript python html flask

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

相关文章:

Python:对 graphlab.SFrame 的所有行的一行的不同列进行迭代操作

javascript - 如何在使用 Phantomjs 生成 HTML 时保留结束 img 标签?

javascript - 如何使用 php jquery ajax 从文件夹加载更多图像

javascript - 使用 ng-repeat 动态加载指令

javascript - 获取显示:block property的链接的href

python - Dask 延迟初始化对于列表理解来说非常慢

python - 将txt文件读入列表Python

javascript - 使用 php session 时出错

javascript - 我怎样才能正确地每 20000 毫秒重新加载一个 div?

javascript - 如何防止选择被更改?