Python Flask ошибка в form.validate_on_submit при добавлении DateField - PullRequest
0 голосов
/ 05 апреля 2020

Я ходил по кругу и не могу понять это. Я пытаюсь добавить время DateField в мою flask форму. Все работает нормально, пока я не добавлю eventstart = DateField..., а затем не удается проверить. Любая помощь будет потрясающей. Я просто не могу пройти мимо этого.

forms.py

@login_required
@events_blueprint.route('/add', methods=['GET', 'POST'])
def register():

    form = RegistrationForm()
    print(form.errors)

    if form.validate_on_submit():
        print("success")
        event = Events(
            eventname=form.eventname.data,
            eventstart=form.eventstart.data, #VALIDATES WITHOUT THIS LINE
            timeblock=form.timeblock.data,
            supplierprice=form.supplierprice.data,
            buyerprice=form.buyerprice.data,
            tier=form.tier.data
        )
        print(event)
        db.session.add(event)
        db.session.commit()
        flash("Thank you for registering your event.")
        return redirect(url_for('events.list_event'))
    print("failed to validate")
    return render_template('add.html', form=form)

Когда я добавляю строку выше eventstart = form.eventstart.data, #VALIDATES БЕЗ ЭТОЙ ЛИНИИ , затем он не проходит проверку.

views.py

class RegistrationForm(FlaskForm):
    eventname = StringField('Event Name', validators=[DataRequired()])
    eventstart = DateTimeField(
       'Enter start date and time', id='datepick', validators=[DataRequired()]
    ) # FAILS AFTER ADDING THIS LINE
   timeblock = IntegerField(
        'Enter the length of time', validators=[DataRequired()]
    )
    supplierprice = IntegerField(
        'Enter the supplier cost', validators=[DataRequired()]
    )
    buyerprice = IntegerField(
        'Enter the buyer cost', validators=[DataRequired()]
    )
    tier = IntegerField(
        'Enter the buyer tier', validators=[DataRequired()]
    )
    submit = SubmitField('Register!')

Снова добавляем строку eventstart = DateTimeField ('Введите дату и время начала', id = 'datepick ', validators = [DataRequired ()]) # FAILS ПОСЛЕ ДОБАВЛЕНИЯ ЭТОЙ ЛИНИИ - это когда происходит сбой.

add. html

{% extends "bootstrap/base.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block title %}This is an example page{% endblock %}

{% block head %}
  {{ super() }}
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/css/bootstrap-datetimepicker.min.css">
{% endblock %}

{% block content %}
  <div class="container">
    <h1>{{current_user}}</h1>
    <div class="row">
      <div class='col-sm-6'>
        <form method="POST">
          {{form.hidden_tag()}}
          {{form.eventname.label}}{{form.eventname()}}<br><br>
          {{form.eventstart.label}}{{form.eventstart}}<br><br>
          {{form.timeblock.label}}{{form.timeblock()}}<br><br>
          {{form.supplierprice.label}}{{form.supplierprice()}}<br><br>
          {{form.buyerprice.label}}{{form.buyerprice()}}<br><br>
          {{form.tier.label}}{{form.tier()}}<br><br>
          {{form.submit()}}
      </form>
      </div>
    </div>
  </div>
{% endblock %}

{% block scripts %}
  {{ super() }}
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
  <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.47/js/bootstrap-datetimepicker.min.js"></script>
  <script type="text/javascript">
    $(function () {
      $('#datepick').datetimepicker();
    });
  </script>
{% endblock %}
...