Python 如何简化Flask和html中的代码

Python 如何简化Flask和html中的代码,python,html,flask,Python,Html,Flask,我已经做了三个星期的烧瓶和python了 我正在尝试制作一个表格,它包含两种货币和汇率,并找到汇率的两边 i、 e CAD给我们,我们给CAD 这是my app.py中的相关代码: @app.route("/form", methods=["GET", "POST"]) def forms(): global reverse_exchange_rate, exchange_rate form = CurrencyForm if re

我已经做了三个星期的烧瓶和python了

我正在尝试制作一个表格,它包含两种货币和汇率,并找到汇率的两边

i、 e CAD给我们,我们给CAD

这是my app.py中的相关代码:

    @app.route("/form", methods=["GET", "POST"])
    def forms():
        global reverse_exchange_rate, exchange_rate
        form = CurrencyForm
        if request.method == 'GET':
            return render_template("form.html")

        if request.method == 'POST' and form.validate_on_submit():
            currency_1 = request.form['currency_1']
            currency_2 = request.form['currency_2']
            exchange_rate = float(request.form['exchange_rate'])
            reverse_exchange_rate = 1 / exchange_rate

            numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
            one = round(numbers.index(1) * exchange_rate, 3)
            two = round(numbers.index(2) * exchange_rate, 3)
            three = round(numbers.index(3) * exchange_rate, 3)
            four = round(numbers.index(4) * exchange_rate, 3)
            five = round(numbers.index(5) * exchange_rate, 3)
            six = round(numbers.index(6) * exchange_rate, 3)
            seven = round(numbers.index(7) * exchange_rate, 3)
            eight = round(numbers.index(8) * exchange_rate, 3)
            nine = round(numbers.index(9) * exchange_rate, 3)
            ten = round(numbers.index(10) * exchange_rate, 3)
            eleven = round(numbers.index(11) * exchange_rate, 3)
            twelve = round(numbers.index(12) * exchange_rate, 3)
            thirteen = round(numbers.index(13) * exchange_rate, 3)
            fourteen = round(numbers.index(14) * exchange_rate, 3)
            fifteen = round(numbers.index(15) * exchange_rate, 3)
            sixteen = round(numbers.index(16) * exchange_rate, 3)

            reverse_one = round(numbers.index(1) * reverse_exchange_rate, 3)
            reverse_two = round(numbers.index(2) * reverse_exchange_rate, 3)
            reverse_three = round(numbers.index(3) * reverse_exchange_rate, 3)
            reverse_four = round(numbers.index(4) * reverse_exchange_rate, 3)
            reverse_five = round(numbers.index(5) * reverse_exchange_rate, 3)
            reverse_six = round(numbers.index(6) * reverse_exchange_rate, 3)
            reverse_seven = round(numbers.index(7) * reverse_exchange_rate, 3)
            reverse_eight = round(numbers.index(8) * reverse_exchange_rate, 3)
            reverse_nine = round(numbers.index(9) * reverse_exchange_rate, 3)
            reverse_ten = round(numbers.index(10) * reverse_exchange_rate, 3)
            reverse_eleven = round(numbers.index(11) * reverse_exchange_rate, 3)
            reverse_twelve = round(numbers.index(12) * reverse_exchange_rate, 3)
            reverse_thirteen = round(numbers.index(13) * reverse_exchange_rate, 3)
            reverse_fourteen = round(numbers.index(14) * reverse_exchange_rate, 3)
            reverse_fifteen = round(numbers.index(15) * reverse_exchange_rate, 3)
            reverse_sixteen = round(numbers.index(16) * reverse_exchange_rate, 3)
            return render_template("table.html", form=form, currency_1=currency_1,currency_2=currency_2, exchange_rate=exchange_rate, numbers=numbers, one=one, two=two,three=three,four=four,five=five,six=six,seven=seven,eight=eight,nine=nine,ten=ten,eleven=eleven,twelve=twelve,thirteen=thirteen,fourteen=fourteen,fifteen=fifteen,sixteen=sixteen,reverse_exchange_rate=reverse_exchange_rate,reverse_one=reverse_one,reverse_two=reverse_two,reverse_three=reverse_three,reverse_four=reverse_four,reverse_five=reverse_five,reverse_six=reverse_six,reverse_seven=reverse_seven,reverse_eight=reverse_eight, reverse_nine=reverse_nine, reverse_ten=reverse_ten,                        reverse_eleven=reverse_eleven,reverse_twelve=reverse_twelve,reverse_thirteen=reverse_thirteen,reverse_fourteen=reverse_fourteen,reverse_fifteen=reverse_fifteen, reverse_sixteen=reverse_sixteen)
        else:
            message = "There was an error. Please try again."
            return message
这是table.html:

{% extends "layouts/main.html" %}

    {% block content %}

        <h1 style="text-align:center">Currency Exchange</h1>

                <div style="margin-right:250px">
                    <div style="margin-left:250px">
                        <table style="border-collapse: collapse;", class="u-full-width">
                            <thead>
                                <tr>
                                    <th>{{ currency_1 }}</th>
                                    <th>{{ currency_2 }}</th>
                                    <th>{{ currency_2 }}</th>
                                    <th>{{ currency_1 }}</th>
                                </tr>
                            </thead>
                            <tbody>
                                <tr>
                                    <td> 1 </td>
                                    <td class="border-right"> {{ one }} </td>
                                    <td> 1 </td>
                                    <td> {{ reverse_one }} </td>
                                </tr>
                                <tr>
                                    <td> 2 </td>
                                    <td class="border-right"> {{two }} </td>
                                    <td> 2 </td>
                                    <td> {{ reverse_two }} </td>
                                </tr>
                                <tr>
                                    <td> 3 </td>
                                    <td class="border-right"> {{ three }} </td>
                                    <td> 3 </td>
                                    <td> {{ reverse_three }} </td>
                                </tr>
                                <tr>
                                    <td> 4 </td>
                                    <td class="border-right"> {{ four }} </td>
                                    <td> 4 </td>
                                    <td> {{ reverse_four }} </td>
                                </tr>
                                <tr>
                                    <td> 5 </td>
                                    <td class="border-right"> {{ five }} </td>
                                    <td> 5 </td>
                                    <td> {{ reverse_five }} </td>
                                </tr>
                                <tr>
                                    <td> 6 </td>
                                    <td class="border-right"> {{ six }} </td>
                                    <td> 6 </td>
                                    <td> {{ reverse_six }} </td>
                                </tr>
                                <tr>
                                    <td> 7 </td>
                                    <td class="border-right"> {{ seven }} </td>
                                    <td> 7 </td>
                                    <td> {{ reverse_seven }} </td>
                                </tr>
                                <tr>
                                    <td> 8 </td>
                                    <td class="border-right"> {{ eight }} </td>
                                    <td> 8</td>
                                    <td> {{reverse_eight }} </td>
                                </tr>
                                <tr>
                                    <td> 9 </td>
                                    <td class="border-right"> {{ nine }} </td>
                                    <td> 9 </td>
                                    <td> {{ reverse_nine }} </td>
                                </tr>
                                <tr>
                                    <td> 10 </td>
                                    <td class="border-right"> {{ ten }} </td>
                                    <td> 10 </td>
                                    <td> {{ reverse_ten }} </td>
                                </tr>
                                <tr>
                                    <td> 11 </td>
                                    <td class="border-right"> {{ eleven }} </td>
                                    <td> 11 </td>
                                    <td> {{ reverse_eleven }} </td>
                                </tr>
                                <tr>
                                    <td> 12 </td>
                                    <td class="border-right"> {{ twelve }} </td>
                                    <td> 12 </td>
                                    <td> {{ reverse_twelve }} </td>
                                </tr>
                                <tr>
                                    <td> 13 </td>
                                    <td class="border-right"> {{ thirteen }} </td>
                                    <td> 13 </td>
                                    <td> {{ reverse_thirteen }} </td>
                                </tr>
                                <tr>
                                    <td> 14 </td>
                                    <td class="border-right"> {{ fourteen }} </td>
                                    <td> 14 </td>
                                    <td> {{ reverse_fourteen }} </td>
                                </tr>
                                <tr>
                                    <td> 15 </td>
                                    <td class="border-right"> {{ fifteen }} </td>
                                    <td> 15 </td>
                                    <td> {{ reverse_fifteen }} </td>
                                </tr>
                                <tr>
                                    <td> 16 </td>
                                    <td class="border-right"> {{ sixteen }} </td>
                                    <td> 16 </td>
                                    <td> {{ reverse_sixteen }} </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            <div style="text-align:center">
                <a class = "button button-primary" href="/form">Change Currencies</a>
            </div>
        {% endblock %}
{%extends“layouts/main.html”%}
{%block content%}
货币兑换
{{currency_1}}
{{currency_2}}
{{currency_2}}
{{currency_1}}
1.
{{1}}
1.
{{reverse_one}}
2.
{{two}
2.
{{reverse_two}}
3.
{{3}}
3.
{{reverse_three}}
4.
{{four}}
4.
{{reverse_four}}
5.
{{5}}
5.
{{reverse_-five}}
6.
{{six}
6.
{{reverse_six}}
7.
{{seven}}
7.
{{reverse_seven}}
8.
{{8}}
8.
{{reverse_eight}}
9
{{nine}
9
{{reverse_nine}}
10
{{ten}
10
{{reverse_ten}}
11
{{十一}}
11
{{reverse_eleven}}
12
{{12}}
12
{{reverse_seven}}
13
{{十三}}
13
{{倒数第十三}
14
{{十四}}
14
{{反向{u十四}}
15
{{十五}
15
{{reverse_十五}}
16
{{十六}
16
{{反向{u十六}}
{%endblock%}
有没有办法缩短这一切

我尝试在app.py中创建一个范围为(0,50)的for循环,尽管它会遍历整个循环,然后将最后一个数字发送到table.html。是否有办法将每个数字发送到table.html

有不同的解决方案吗


请记住,我已经编写了3周的代码,可能有一个非常简单的解决方案,我还没有想出。感谢您的帮助

正如@VPfB所说,可能值得研究数据结构。下面是如何在现有代码中使用一些

首先,我将为示例定义一个静态汇率:

exchange_rate = 1.4
然后构建一个名为
headers
字典,其中包含以下值:

headers = {
    'currency_1': 'USD',
    'currency_2': 'CAD',
    'exchange_rate': exchange_rate,
    'reverse_exchange_rate': 1 / exchange_rate,
}
我刚刚在这里手动分配了字符串
'USD'
'CAD'
,用于演示,但是
data = [dict(num=n,
             normal =  round(n * headers['exchange_rate'], 3),
             reverse = round(n * headers['reverse_exchange_rate'], 3)
      ) for n in range(0, 16)]
data = [] # an empty list
for n in range(0, 16):
    d = {} # an empty dict
    d['num'] = n
    d['normal'] = round(n * headers['exchange_rate'], 3)
    d['reverse'] = round(n * headers['reverse_exchange_rate'], 3)
    data.append(d) # add this dict to the list.
data = [] # an empty list
for n in range(0, 16):
    d = dict(num  = n,
             normal = round(n * headers['exchange_rate'], 3),
             reverse = round(n * headers['reverse_exchange_rate'], 3))
    data.append(d) # add this dict to the list.
return render_template('index.html', headers=headers, data=data)
<table>
  <thead>
    <tr>  
      <th>{{ headers['currency_1'] }}</th>
      <th>{{ headers['currency_2'] }}</th>
      <th>{{ headers['currency_2'] }}</th>
      <th>{{ headers['currency_1'] }}</th>
    </tr>
  </thead>

  <tbody>
    {% for row in data %}
    <tr>
      <td> {{ row['num'] }} </td>
      <td class="border-right"> {{ row['normal'] }} </td>
      <td> {{ row['num'] }} </td>
      <td> {{ row['reverse'] }} </td>
    </tr>
    {% endfor %}  
  </tbody>
</table>