Gan*_*nye 5 flask flask-sqlalchemy
我正在使用Flask创建一个论坛项目,并使用Flask-SQLAlchemy管理所有用户,线程,帖子等.但是,我发现当我尝试执行x(例如编辑帖子)时,如果我尝试执行任何其他操作(例如删除帖子),我会收到InvalidRequestError.
要编辑帖子,
def post_edit(id, t_id, p_id):
post = Post.query.filter_by(id=p_id).first()
if post.author.username == g.user.username:
form = PostForm(body=post.body)
if form.validate_on_submit():
post.body = form.body.data
db.session.commit()
return redirect(url_for('thread', id=id, t_id=t_id))
return render_template('post_edit.html', form=form, title='Edit')
else:
flash('Access denied.')
return redirect(url_for('thread', id=id, t_id=t_id))
Run Code Online (Sandbox Code Playgroud)
并删除帖子,
@app.route('/forum=<id>/thr=<t_id>/p=<p_id>/delete', methods=['GET','POST'])
def post_delete(id, t_id, p_id):
post = Post.query.filter_by(id=p_id).first()
if post.author.username == g.user.username:
db.session.delete(post)
db.session.commit()
return redirect(url_for('thread', id=id, t_id=t_id))
else:
flash('Access denied.')
return redirect(url_for('thread', id=id, t_id=t_id))
Run Code Online (Sandbox Code Playgroud)
并张贴帖子
@app.route('/forum/id=<id>/thr=<t_id>', methods=['GET','POST'])
def thread(id, t_id):
forum = Forum.query.filter_by(id=id).first()
thread = Thread.query.filter_by(id=t_id).first()
posts = Post.query.filter_by(thread=thread).all()
form = PostForm()
if form.validate_on_submit():
post = Post(body=form.body.data,
timestamp=datetime.utcnow(),
thread=thread,
author=g.user)
db.session.add(post)
db.session.commit()
return redirect(url_for('thread', id=id, t_id=t_id))
return render_template('thread.html', forum=forum, thread=thread, posts=posts, form=form, title=thread.title)
Run Code Online (Sandbox Code Playgroud)
不幸的是,解决这个问题的唯一可靠方法是重置实际运行应用程序的脚本run.py.
#!bin/python
from app import app
app.run(debug=True,host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)
您是否正在使用 WooshAlchemy,因为它可能是您问题的一部分。此处描述
他描述了需要修改 WooshAlchemy 扩展的“修复”。
通常,这可能意味着您调用了 Post 模型对象,然后使用“session.add”附加它,然后尝试“session.delete”或在同一对象上执行另一个“session.add”。
另外,你的请求路由对于 Flask 来说有点奇怪,我以前从未见过 Flask 的“thr=<t_id>”类型的符号。这对你来说效果好吗?
http://flask.pocoo.org/docs/quickstart/#variable-rules
| 归档时间: |
|
| 查看次数: |
3632 次 |
| 最近记录: |