SolovyevMax
@SolovyevMax

Как правильно отправить запрос на страницу через POST в Flask?

Исходные данные.

forms.py:
class AddCardForm(Form):
    feature = TextField(u'Свойство', validators=[Required(), Length(max=15)])
    article = TextField(u'Артикль', validators=[Required(), Length(max=15)])
    price = IntegerField(u'Цена в EUR', validators=[Required()])


views.py:
@app.route('/admin/add/', methods=['GET', 'POST'])
@requires_auth
def add_item():
        try:
            properties
        except NameError:
            properties = []
        form = AddCardForm(request.form, csrf_enabled=True)

        if request.method == 'POST' and request.form['btn'] == 'Add Property' :
            <b>properties.append({u'feature': form.feature.data, u'article': form.article.data, u'price': form.price.data})</b>
            return render_template('/admin/add.html', form=form, properties=properties)


templates/add.html
<form action="" method="post" enctype="multipart/form-data">
            {% if properties %}
                {% for i in properties %}
                        Свойство: {{ i['feature'] }}<br>
                        Артикл: {{ i['article'] }}<br>
                        Цена: {{ i['price'] }}<br>
                {% endfor %}
            {% endif %}

            {{ form.feature.label }} : {{ edit_field(form.feature) }} <br>
            {{ form.article.label }} : {{ edit_field(form.article) }} <br>
            {{ form.price.label }} : {{ edit_field(form.price) }} <br>
            <p><input type="submit" name="btn" value="Add Property"></p>


Проблема в том, что properties, который в последствии должен пойти в базу не наполняется свойствами с помощью list.append() а только перезаписывает значения.
Что я делаю не так? =(
  • Вопрос задан
  • 3568 просмотров
Пригласить эксперта
Ответы на вопрос 1
@bromzh
Drugs-driven development
try:
    properties
except NameError:
    properties = []

Это что за нафиг? Внутри функции таким образом ты сможешь создать только локальную переменную. Соответственно, при очередном вызове всегда будет срабатывать исключение и переменная создаётся заново (область видимости у неё - функция).
Создать глобальную переменную или поле класса ты не смог?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы