我必须有条件地删除数据库条目,我无法弄清楚,因为表单要求在uri中发布正确的参数。我可以删除shell中具有相同代码但不在视图中的条目。以下是观点和形式:
@app.route('/cancelannualsub/<int:student_id>', methods=['DELETE'])
def cancel_yearly_rec(student_id):
if not user_authorized():
return redirect('/')
user = get_profile_data(session['auth_token'])
profile_data = user['StudentProfile']
pkg = Package.query.filter_by(student_id=profile_data.id).first_or_404()
if request.method=='POST':
try:
pkg = Package()
dbase.session.delete(pkg)
flash('Package deleted successfully.')
dbase.session.commit()
except:
pass
return redirect('plans')
return render_template('profile/cancel/cancel.html')
形式:
<form action="{{ url_for('cancel_yearly_rec', student_id=***can't render value here***) }}" method='post'>
<input type='hidden' name='_method' value='DELETE'
<input class='btn' type="submit" value="Cancel" />
</form>
我正在尝试使用stackoverflow示例中的不同内容。如果我做错了或者有更好的方法,请提供协助。
答案 0 :(得分:0)
我没有使用正确的格式来渲染try块中的模型对象。
它应该是这样的:
mymodel = Model.query.filter_by(variable=some_field_data).first_or_404()
dbase.session.delete(mymodel)
dbase.session.commit()
对于读者来说,不要与“dbase”混淆,因为我做了这样的导入:
从应用导入db
作为dbase
您可以通过以下方式导入它:
from app import db
或添加“as anything
”。
然后,您可以在文件的其余部分中引用已导入的任何内容。