我似乎无法通过此表单将数据发布到我的数据库中。我使用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 %}
有什么想法吗?
答案 0 :(得分:0)
错误的形式可能会回答我自己的问题,但看起来主要的问题是我已经在event
表创建并且更改未正确应用之后编辑了我的模型。删除和重新创建表是我们需要的。
另一个问题是您无法在此日期字段上调用.strip()
。