Flask url_for不传递参数

时间:2017-06-29 00:52:04

标签: python-3.x jinja2 flask-sqlalchemy

我在Html中有以下代码:

{% for i in events %}
        <li>
            <strong>{{i.event_title}}</strong><br />
            {{i.descript}} <br />
            {{i.customer_id}}<br/>
            <small>{{i.date}}</small>
            </br>
            <a href="{{url_for('cancel_event',ID=i.event_id)}}">Cancel this event</a>
        </li>
    {% else %}
        <li><strong>You have no events scheduled</strong>
    {% endfor %}

但是我收到以下错误:canel_event缺少1个必需的位置参数:&#39; ID&#39;。这是烧瓶代码:

@app.route('/cancel/')
def cancel_event(ID):
    if not ID:
        abort(401)
    Event.query.filter_by(Event.event_id == ID).delete()
    db.session.commit()
    return render_template('cancel.html')

我不知道我做错了什么。请帮忙

1 个答案:

答案 0 :(得分:2)

您应该通过邮寄或获取方法请求您的身份证明。然后从请求中提取。例如,通过邮寄:

@app.route('/cancel/', method=['POST','GET'])
def cancel_event():
    ID = None
    if request.method == 'POST':    # get ID in the request
        ID = request.files['ID']
    if not ID:
        abort(401)
    Event.query.filter_by(Event.event_id == ID).delete()
    db.session.commit()
    return render_template('cancel.html')

阅读此内容可能有所帮助:http://flask.pocoo.org/docs/0.12/quickstart/#accessing-request-data