python flask url_for 多參數(實現修改和刪除數據)

一. form提交表單更新數據,post請求

1. HTML文件
{% for car in carinfos %}
 <form class="form-horizontal" action="{{ url_for('upgrade_carinfo',carid=car.cid) }}"
      method="post">
    <div class="form-group">
        <label for="upgrade_cplant"
               class="col-xs-3 control-label">車牌號:</label>
        <div class="col-xs-8 ">
            <input type="text" class="form-control input-sm duiqi"
                   id="upgrade_cplant"
                   placeholder="" name="upgrade_info_cplant">
        </div>
    </div>

    <div class="form-group" style="text-align:center;">
        <button type="button" class="btn btn-xs btn-xs btn-white"
                data-dismiss="modal">取 消
        </button>
        <button type="submit" class="btn btn-xs btn-xs btn-green">
            保 存
        </button>
    </div>
</form>
{% endfor %}

1.1 關於{% for car in carinfos %} {% endfor %},其中carinfos的信息傳遞,是模板渲染得到的,其後端代碼如下

def back():
    print("back")
    context = {
        'carinfos':Car.query.all(),
        'rentinfos':RentInfo.query.all(),
        'users':User.query.all(),
        'fixcars':FixCar.query.all()
    }
    return  render_template('back/back.html',**context)
Python代碼
carid是主鍵,該信息要傳到前端,可以通過url_for指定參數傳遞
@app.route('/upgrade_carinfo/',methods=['POST'])
def upgrade_carinfo():
    carid = request.args.get("carid")
    ## 這裏就可以獲取到url_for傳來的參數carid,由carid可以經過查詢數據庫,
    cplant = request.form.get('upgrade_cplant') # 獲取提交的表單內容
    return redirect(url_for('back'))

二.通過a 標籤中的 href 提交參數

1.HTML文件
{% for car in carinfos %}
<div class="modal fade" id="deleteSource" role="dialog"
     aria-labelledby="gridSystemModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
                        aria-hidden="true">&times;</span></button>
                <h4 class="modal-title" id="gridSystemModalLabel">提示</h4>
            </div>
            <div class="modal-body">
                <div class="container-fluid"> 確定要刪除該車輛?刪除後不可恢復!</div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-xs btn-white" data-dismiss="modal">取
                    消
                </button>
                <button type="submit" class="btn btn-xs btn-danger">
                    <a href="{{ url_for('delete_car',carid= car.cid) }}">保 存</a>
                </button>
            </div>
        </div>
        <!-- /.modal-content -->
    </div>
    <!-- /.modal-dialog -->
</div>
{% endfor %}
2.後臺python代碼
@app.route("/delete_car/<carid>", methods=['GET', 'POST'])
def delete_car(carid):
    car = Car.query.filter(Car.cid==carid).first()
    car = Car.query.get(carid)
    if not car:
        flash("該車不存在")
    else:
        try:
            car = Car.query.filter(Car.cid==carid ).first()
            # db.session.delete(car)
            # db.session.commit()
        except Exception as e:
            print(e)
            db.session.rollback()
    print(car.cnote)
    return redirect(url_for('back'))

這種方式和form相比,form是要提交多組數據到後端,這裏的a標籤提交,只需要將carid提交給後臺處理即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章