2016-02-02 3 views
-1

Вот мой маршрут функция:Ошибка приезда Python-колба

@app.route('/home/shelter/<int:shelter_id>/', methods=['GET','POST']) 
def showShelterDetails(shelter_id): 
    shelter = session.query(Shelter).filter_by(id = shelter_id).one() 
    if request.method == 'POST': 
     if request.form['shelterName']: 
      shelter.name = request.form['shelterName'] 
      session.add(shelter) 
      session.commit() 
      flash("Shelter("+shelter.name+") edited successfully!") 
      return render_template('shelterdetails.html', shelter_id=shelter_id, shelter=shelter) 
     else: 
      flash(u'Error Occured!','error') 
      return render_template('shelterdetails.html', shelter_id=shelter_id, shelter=shelter) 

     if request.form['shelterAddress']: 
      shelter.name = request.form['shelterAddress'] 
      session.add(shelter) 
      session.commit() 
      flash("Shelter("+shelter.name+") address edited successfully!") 
      return render_template('shelterdetails.html', shelter_id=shelter_id, shelter=shelter) 
     else: 
      flash(u'Error Occured!','error') 
      return render_template('shelterdetails.html', shelter_id=shelter_id, shelter=shelter) 
    else: 
     return render_template('shelterdetails.html', shelter_id = shelter_id, shelter = shelter) 

Вот мой шаблон HTML:

{% extends "master.html" %} 

{% block title %}Home{% endblock %} 

{% block body %} 

    {% with messages = get_flashed_messages(category_filter=["message"]) %} 
    {% if messages %} 
     <div class="alert alert-success"> 
     {% for message in messages %} 
     <strong>{{message}}!</strong> 
     {% endfor %} 
     </div> 
    {% endif %} 
{% endwith %} 

{% with errors = get_flashed_messages(category_filter=["error"]) %} 
    {% if errors %} 
    <div class="alert alert-danger"> 
     {% for message in errors %} 
     <strong>{{message}}!</strong> 
     {% endfor %} 
    </div> 
    {% endif %} 
{% endwith %} 
<form action="{{ url_for('showShelterDetails',shelter_id=shelter_id)}}" method = 'post'> 

    <fieldset class="form-group"> 
    <label for="shelterName">Name :</label> 
    <input type="text" class="form-control" style="width:500px" name="shelterName" value='{{ shelter.name }}' > 
    </fieldset> 

    <fieldset class="form-group"> 
    <label for="shelterName">Address :</label> 
    <input type="text" class="form-control" style="width:500px" name="shelterAddress" value='{{ shelter.address }}'> 
    </fieldset> 

Моя проблема заключается в следующем: Метод POST не проверяет, shelterAddress Поле пустое или пустое или нет. Также при возврате сообщений об успешном завершении или сбое. Печатается только первое сообщение.

Почему другие сообщения не печатаются? И почему он не проверяет пустых бойцов?


EDIT 1: изменил мою функцию просмотра на:

@app.route('/home/shelter/<int:shelter_id>/', methods=['GET','POST']) 
def showShelterDetails(shelter_id): 
    shelter = session.query(Shelter).filter_by(id = shelter_id).one() 
    if request.method == 'POST': 
     if request.form['shelterName']!="": 
      shelter.name = request.form['shelterName'] 
      session.add(shelter) 
      session.commit() 
      flash("Shelter("+shelter.name+") edited successfully!") 

     if request.form['shelterAddress']!= "": 
      shelter.name = request.form['shelterAddress'] 
      session.add(shelter) 
      session.commit() 
      flash("Shelter("+shelter.name+") address edited successfully!") 

    else: 
     return render_template('shelterdetails.html', shelter_id = shelter_id, shelter = shelter) 

ValueError: View function did not return a response

ответ

1

Это потому, что вы возвращение рано ли request.form['shelterName'] является truthy или нет. Вероятно, вам нужен один оператор возврата в самом конце вашей функции просмотра.

+0

Можете ли вы объяснить это на примере? –

+0

Пожалуйста, просмотрите отредактированный вопрос. Я получаю ValueError –

+0

Как я напечатал одно сообщение успеха для всех допустимых данных и всех сообщений об ошибках для недопустимых входов? –

Смежные вопросы