Как добавить формы в словарь при отправке - PullRequest
0 голосов
/ 12 декабря 2018

Я создаю корзину для покупок как часть приложения, которое я создаю.Я пытаюсь выяснить, как добавить отправку формы в словарь (я думаю, это то, что мне нужно сделать).Так, например, это то, как будет выглядеть страница (это всего лишь тестовые данные).

Cart После нажатия кнопки добавления я хочу, чтобы название элемента и цена заполнялись вТаблица заказов справа от таблицы цен (для начала).Как только все заказы будут добавлены, я нажму кнопку «Заказ», и это упорядочит добавленные элементы в списке определенного типа в базе данных с использованием sqlalchemy.Теперь я чувствую себя сильно и могу ошибаться из-за того, что при отправке формы с помощью кнопки добавления форму необходимо добавить в словарь.Я просто не знаю, как сохранить этот словарь и где этот словарь должен храниться?Вот мой код на данный момент.

rout.py Я попытался добавить словарь в функцию маршрута, но для каждой отправки создается один экземпляр.Таким образом, ничего не сохраняется в словаре.

@app.route('/equipment', methods=['POST', 'GET'])
def equipment():
    form = OrderEquipmentForm()
    eq = equipment_prices
    # Tried to store forms in this dictionary but it look like a new instance
    # is created on every form submission
    ordersss = {}

    if form.validate_on_submit():
        ordersss[form.Type.data] = form.Price.data
        print(form.Type.data, form.Price.data)
        print(ordersss)
        return redirect(url_for('equipment'))

    return render_template('equipment.html', name='equipment', eq=eq, form=form)

@app.route('/equipment/cart', methods=['GET, POST'])
def cart():
    return render_template('cart.html', name='cart')

Forms.py Не уверен, нужна ли функция в фактической форме, которая добавляет значения в словарь

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class AddEquipmentForm(FlaskForm):
    Type = StringField('Type of Equipment',DataRequired())
    Price = StringField('Price',DataRequired())
    submit = SubmitField('Add equipment')

class OrderEquipmentForm(FlaskForm):

    Type = StringField()
    Price = StringField()
    Order = SubmitField('Order')

    # Should Dictionary go here?
    # Not sure
    def dict():
        dict = {}
        dict[Type] = Price

equipment.html Я хотел бы зациклить элемент словаря в таблице заказов, если требуется словарь.

{% extends 'base.html' %}
{% block content %}
    <div class="row">
      <div class="col-6-sm">
        <h1>Pricing</h1>
        <table class='border'>
          <thead class='border'>
            <th style="width:200px;">Equipment</th>
            <th style="width:200px; text-align:center;">Price</th>
            <th></th>
          </thead>
          {% for quip in eq %}
            <form method="post">
              {{ form.hidden_tag() }}
              <tr class ='border'>
                <td>{{ quip }}</td>
                <td style="text-align:center;"> <strong>${{ eq[quip] }}</strong></td>
                <!-- Here I'm adding StringFields from the form but hiding them so they aren't displayed so I can submit the data somehow, hopefully to a dictionary. -->
                <td style="display:none;">{{ form.Type(value=quip)}}</td>
                <td style="display:none;">{{ form.Price(value=eq[quip]) }}</td>
                <td><button class='btn btn-primary' type="submit">Add</button></td>
              </tr>
            </form>
          {% endfor %}
        </table>
      </div>
      <div class="col-6-sm">
        <h1>Orders</h1>
        <table>
          <!-- This is where a loop of the dictionary elements of the items added would go -->
          <tr>
            <td></td>
            <td></td>
          </tr>
          <button style='float:right' type="button" name="button" class='btn btn-info'>Order</button>
        </table>
      </div>
    </div>
{% endblock %}
...