当然,应该有一种更干净的方式来编写此Flask路由代码

时间:2020-07-24 15:39:32

标签: python flask sqlalchemy flask-wtforms simplify

我想在我的Web页脚部分中编辑我的联系人,并且已经做到了: 在我的管理页面中,我这样做了,因此我可以为每个联系人form.contact1 form.contact2 form.contact3 form.contact4填写一个包含4个输入的表单,同时我创建了一个包含Contacts列的content模型。


我的路线代码:

@app.route('/admin/media-kontaktai', methods=['GET', 'POST'])
@login_required
def media_contacts():
    form = MediaContactsForm()

    if form.validate_on_submit():
        rows = db.session.query(func.count(Contacts.id)).scalar()
        for x in range(1, rows+1):
            erace_contact = Contacts.query.get(x)
            db.session.delete(erace_contact)
            db.session.commit()
        if form.contact1.data:
            contact = Contacts(content=form.contact1.data)
            db.session.add(contact)
            db.session.commit()
        if form.contact2.data:
            contact = Contacts(content=form.contact2.data)
            db.session.add(contact)
            db.session.commit()
        if form.contact3.data:
            contact = Contacts(content=form.contact3.data)
            db.session.add(contact)
            db.session.commit()
        if form.contact4.data:
            contact = Contacts(content=form.contact4.data)
            db.session.add(contact)
            db.session.commit()
        flash('Informacija atnaujinta!', 'success')
        return redirect(url_for('media_contacts'))
    elif request.method == 'GET':
        contact1 = Contacts.query.get(1)
        form.contact1.data = contact1.content
        contact2 = Contacts.query.get(2)
        form.contact2.data = contact2.content
        contact3 = Contacts.query.get(3)
        form.contact3.data = contact3.content
        contact4 = Contacts.query.get(4)
        form.contact4.data = contact4.content
    contacts = Contacts.query.all()
    return  render_template('a-media-kontaktai.html', title='Media ir kontaktai', form=form, contacts=contacts)

2 个答案:

答案 0 :(得分:1)

这未经测试。看看是否有效:

for i in range (1,5):
    if form['contact' + str(i)].data:
        contact = Contacts(content=form['contact' + str(i)].data)
        db.session.add(contact)
        db.session.commit()

答案 1 :(得分:0)

我还没有测试过它,但是它应该可以工作,或者至少使您走上正确的道路,以便进一步压缩它。

remove.packages
相关问题