Flask App未发布到数据库

时间:2015-11-21 06:07:31

标签: python flask flask-wtforms peewee

我似乎无法通过此表单将数据发布到我的数据库中。我使用Peewee ORM在Flask框架中使用Python。当我提交表单时,我看到POST事件执行(见下文),但没有任何内容写入数据库。

[21/Nov/2015 04:21:47] "POST /create-event HTTP/1.1" 200 -

我知道数据库连接本身很好,因为另一个写入功能正在运行。下面是代码以及它所在的文件的指示。

app.py

@app.route('/create-event', methods=('GET', 'POST'))
@login_required
def create_event():
    form = forms.EventForm()
    if form.validate_on_submit():
        models.Event.create(user=g.user.id,
                            name=form.name.data.strip(),
                            description=form.description.data.strip(),
                            date=form.date.data.strip()
                            )
        flash("Event created!", "success")
        return redirect(url_for('timeline'))
    return render_template('userpages/event_create.html', form=form)

forms.py

class EventForm(Form):
    name = StringField("Event Name", validators=[DataRequired()])
    description = TextAreaField("Description", validators=[DataRequired()])
    date = DateField("Date", validators=[DataRequired()])

models.py

class Event(Model):
    timestamp = DateTimeField(default=datetime.datetime.now)
    user = ForeignKeyField(
        rel_model=User,
        related_name='events'
    )
    name = CharField()
    description = TextField()
    date = DateField()

    class Meta:
        database = DATABASE
        order_by = ('-timestamp',)

event_create.html

{% extends "layout.html" %}
{% from 'macros.html' import render_field %}

{% block content %}

<h1>Create New Event</h1>

<form method="POST" action="" class="form">
    {{ form.hidden_tag() }}
    {% for field in form %}
        {{ render_field(field) }}
    {% endfor %}
    <button type="submit" id="submit">Create</button>
</form>

{% endblock %}

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

错误的形式可能会回答我自己的问题,但看起来主要的问题是我已经在event表创建并且更改未正确应用之后编辑了我的模型。删除和重新创建表是我们需要的。

另一个问题是您无法在此日期字段上调用.strip()