Flask应用程序未发布到数据库

2024-04-26 21:05:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我似乎无法让此表单将数据发布到我的数据库。我正在使用peeweeorm在Python的Flask框架中工作。当我提交表单时,我看到一个POST事件执行(见下文),但没有任何内容写入数据库。你知道吗

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

我知道数据库连接本身是好的,因为另一个写函数正在工作。下面是代码以及它在哪个文件中的指示。你知道吗

应用程序类型

@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)

表单.py

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

型号.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',)

事件_创建.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 %}

有什么想法吗?你知道吗


Tags: nameformevent数据库表单fielddatehtml
1条回答
网友
1楼 · 发布于 2024-04-26 21:05:11

回答我自己的问题的形式可能不好,但看起来主要的问题是我在创建event表之后编辑了模型,并且更改没有正确应用。需要删除并重新创建表。你知道吗

另一个问题是不能在这个日期字段上调用.strip()。你知道吗

相关问题 更多 >