Flask의 데이터베이스에 양식 값이 추가되지 않습니다.

Glen Veigas

이 질문을 이전에 게시했지만 필요한 솔루션을 제공하지 않는 유사한 질문에 연결되어 답변을 위해 마감되었습니다.

나는 형태가 내가 추가하는 시도 검증되지 않습니다 플라스크 앱을 통해 운동을하는 동안 한 위치에서 다른 위치로 제품의 이동을 추적하는 플라스크 응용 프로그램 만든 그래서 {{ form.hidden_tag() }}{{ form.csrf_token }}사용자로부터 입력을 받아 HTML 파일에 있습니다.

명령 줄의 터미널에서이 응용 프로그램을 실행하면 양식의 유효성이 검사되고 데이터베이스에 추가되지만 플라스크 앱을 실행하고 브라우저에서 양식을 제출하면 그렇지 않습니다.

여기에 내 코드가 있습니다.

class MovementForm(FlaskForm):
    to_location = SelectField('To Location', coerce=int)
    from_location = SelectField('From Location', coerce=int)
    product = SelectField('Product')
    quantity = IntegerField('Quantity')
    add_movement = SubmitField('Add Movement')

@app.route('/movements',methods=["GET","POST"])
def add_movements():
    form = MovementForm()
    form.to_location.choices = [(location.id, location.location_name) for location in Location.query.all()]
    form.from_location.choices = [(location.id, location.location_name) for location in Location.query.all()]
    form.product.choices = [(product.id, product.product_name) for product in Product.query.all()]
    form.from_location.choices.insert(0, (0, 'None'))   
    if form.validate_on_submit():
        new_movement = Movement(to_location_id=form.to_location.data, from_location_id=form.from_location.data, product_id=form.product.data, quantity=form.quantity.data)
        db.session.add(new_movement)
        db.session.commit()
        flash('Product has been moved!', 'success')
        return redirect(url_for('add_movements'))   
    return render_template('add_movements.html', form=form)

다음은 내 html 파일입니다.

 <form action="/movements" method="post">
        {{ form.hidden_tag() }}
        {{ form.csrf_token }}
        <div class="row">
            <div class="form-group col">
                {{ form.from_location.label(class="form-control-label") }}
                {{ form.from_location(class="form-control form-control-lg") }}
            </div>
            <div class="form-group col">
                {{ form.to_location.label(class="form-control-label") }}
                {{ form.to_location(class="form-control form-control-lg") }}
            </div>
        </div>
        <div class="row">
            <div class="form-group col">
                {{ form.product.label(class="form-control-label") }}
                {{ form.product(class="form-control form-control-lg") }}
            </div>
            <div class="form-group col">
                {{ form.quantity.label(class="form-control-label") }}
                {{ form.quantity(class="form-control form-control-lg") }}
            </div>
        </div>
        <div class="form-group">
                {{ form.add_movement(class="btn btn-outline-info") }}
        </div>
    </form> 

여기서 뭐가 잘못 됐나요?

페데리코 바우

양식의 작업을 HTML 양식에서 변경하려면 제거하십시오.

 <form action="" method="post">
    {{ form.hidden_tag() }}
    {{ form.csrf_token }}
    <div class="row">
        <div class="form-group col">
            {{ form.from_location.label(class="form-control-label") }}
            {{ form.from_location(class="form-control form-control-lg") }}
        </div>
        <div class="form-group col">
            {{ form.to_location.label(class="form-control-label") }}
            {{ form.to_location(class="form-control form-control-lg") }}
        </div>
    </div>
    <div class="row">
        <div class="form-group col">
            {{ form.product.label(class="form-control-label") }}
            {{ form.product(class="form-control form-control-lg") }}
        </div>
        <div class="form-group col">
            {{ form.quantity.label(class="form-control-label") }}
            {{ form.quantity(class="form-control form-control-lg") }}
        </div>
    </div>
    <div class="form-group">
            {{ form.add_movement(class="btn btn-outline-info") }}
    </div>
</form> 

이것이 문제를 해결합니까?

또한 내가 제안하는 것은 HTML에 Flash 메시지를 추가하는 것입니다. Form이 제출되면 'add_movements'함수로 다시 돌아 오는 것을 볼 수 있기 때문입니다. 따라서 다음을 추가하십시오.

 <div>
     {% for msg in get_flashed_messages%}
         <h1>{{msg}}</h1>
     {% endfor %}
 </div>
 <form action="" method="post">
{{ form.hidden_tag() }}
{{ form.csrf_token }}
<div class="row">
    <div class="form-group col">
        {{ form.from_location.label(class="form-control-label") }}
        {{ form.from_location(class="form-control form-control-lg") }}
    </div>
    <div class="form-group col">
        {{ form.to_location.label(class="form-control-label") }}
        {{ form.to_location(class="form-control form-control-lg") }}
    </div>
</div>
<div class="row">
    <div class="form-group col">
        {{ form.product.label(class="form-control-label") }}
        {{ form.product(class="form-control form-control-lg") }}
    </div>
    <div class="form-group col">
        {{ form.quantity.label(class="form-control-label") }}
        {{ form.quantity(class="form-control form-control-lg") }}
    </div>
</div>
<div class="form-group">
        {{ form.add_movement(class="btn btn-outline-info") }}
</div>

#편집하다

강제로 누락 된 후 제품 필드에 누락 된 것이 있음을 발견했습니다.

class MovementForm(FlaskForm):
    to_location = SelectField('To Location', coerce=int)
    from_location = SelectField('From Location', coerce=int)
    product = SelectField('Product', coerce=int)
    quantity = IntegerField('Quantity')
    add_movement = SubmitField('Add Movement')

# 2 수정


이런 종류의 문제 (항상 발생)에서 실행하는 경우 print 문과 If / Else 절도 추가하는 것이 좋습니다. 이렇게하면 문제가 어디에 있는지 크게 도움이되고 (게시 한 문제 유형에 대한 문제는 '볼 수 없다는 것'입니다.) '눈'을 줄 것입니다.

예를 들어 이것은 내가 한 일입니다.

@app.route('/movements',methods=["GET","POST"])
def add_movements():

    form = MovementForm()
    form.to_location.choices = [(location.id, location.location_name) for 
    location in Location.query.all()]
    form.from_location.choices = [(location.id, location.location_name) 
    for location in Location.query.all()]
    form.product.choices = [(product.id, product.product_name) for product 
    in Product.query.all()]
    form.from_location.choices.insert(0, (0, 'None')) 

    if form.validate_on_submit():
        print('Form Ok') #if you see the 'Form ok' to see if is validated
        new_movement = Movement(to_location_id=form.to_location.data, 
        from_location_id=form.from_location.data, 
        product_id=form.product.data, quantity=form.quantity.data)
        db.session.add(new_movement)
        db.session.commit()
        flash('Product has been moved!', 'success')
        return redirect(url_for('add_movements'))
     else:
         print('Form Not Ok') #If you see this printed then you see that 
          #is not validated

return render_template('add_movements.html', form=form)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

데이터베이스의 새 열이 cakephp 양식에서 데이터를 수신하지 않습니다.

분류에서Dev

MySQL 데이터베이스에 추가되는 행이지만 PHP를 사용하는 html 양식의 다른 데이터는 없습니다.

분류에서Dev

MySql 데이터베이스가 내 양식의 값을 제출하지 않습니다.

분류에서Dev

Django : 양식이 데이터베이스에 추가되지 않음

분류에서Dev

내 양식이 데이터베이스에 데이터를 추가하지 않습니다-Django

분류에서Dev

Flask 요청 양식 사용자 이름이 데이터베이스 텍스트와 같지 않습니다.

분류에서Dev

Flask 요청 양식 사용자 이름이 데이터베이스 텍스트와 같지 않습니다.

분류에서Dev

양식 제출 값이 PHP의 데이터베이스에 삽입되지 않음

분류에서Dev

내 양식 데이터가 내 phpmyadmin 데이터베이스에 게시되지 않습니다.

분류에서Dev

양식에 입력 한 데이터가 Oracle 데이터베이스로 전송되지 않습니다.

분류에서Dev

내 Django 양식 데이터가 내 데이터베이스에 저장되지 않습니다.

분류에서Dev

HTML (Php) 양식을 사용하여 MySQL 데이터베이스에 데이터를 추가하는 동안 PHP에서 정의되지 않은 색인 오류

분류에서Dev

내 PHP 형식의 데이터베이스에서 편집 및 삭제가 실행되지 않습니다.

분류에서Dev

데이터는 php, pdo의 데이터베이스에 추가되지 않습니다.

분류에서Dev

등록 양식의 새 필드에 추가 된 값이 Spree에 저장되지 않습니다.

분류에서Dev

양식의 드롭 다운 선택은 데이터베이스에 데이터를 저장하지 않습니다.

분류에서Dev

양식의 사용자 등록 필드가 데이터베이스에 저장되지 않음

분류에서Dev

데이터가 데이터베이스에서 양식으로 나오지 않습니다.

분류에서Dev

Ember 양식 값이 정의되지 않았습니다.

분류에서Dev

양식이 mysql 데이터베이스에 데이터를 삽입하지 않습니다.

분류에서Dev

데이터베이스의 HTML 양식 <select> 데이터가 올바르게 표시되지 않음

분류에서Dev

CodeIgniter가 데이터베이스에 양식 값을 제출하지 않음

분류에서Dev

데이터베이스에 저장되지 않은 HTML 양식 데이터-Django

분류에서Dev

save () 메서드는 양식 데이터를 데이터베이스 (Django ModelForm)에 저장하지 않습니다.

분류에서Dev

HTML / PHP 양식은 MySQL 데이터베이스에 데이터를 삽입하지 않습니다.

분류에서Dev

Laravel 경로, 양식은 데이터베이스에 데이터를 제출하지 않습니다.

분류에서Dev

양식 제출 후 AngularJS 데이터가 정의되지 않았습니다.

분류에서Dev

PHP 양식 제출이 데이터베이스에 삽입되지 않습니다.

분류에서Dev

데이터베이스에 대한 양식 항목이 전송되지 않습니다.

Related 관련 기사

  1. 1

    데이터베이스의 새 열이 cakephp 양식에서 데이터를 수신하지 않습니다.

  2. 2

    MySQL 데이터베이스에 추가되는 행이지만 PHP를 사용하는 html 양식의 다른 데이터는 없습니다.

  3. 3

    MySql 데이터베이스가 내 양식의 값을 제출하지 않습니다.

  4. 4

    Django : 양식이 데이터베이스에 추가되지 않음

  5. 5

    내 양식이 데이터베이스에 데이터를 추가하지 않습니다-Django

  6. 6

    Flask 요청 양식 사용자 이름이 데이터베이스 텍스트와 같지 않습니다.

  7. 7

    Flask 요청 양식 사용자 이름이 데이터베이스 텍스트와 같지 않습니다.

  8. 8

    양식 제출 값이 PHP의 데이터베이스에 삽입되지 않음

  9. 9

    내 양식 데이터가 내 phpmyadmin 데이터베이스에 게시되지 않습니다.

  10. 10

    양식에 입력 한 데이터가 Oracle 데이터베이스로 전송되지 않습니다.

  11. 11

    내 Django 양식 데이터가 내 데이터베이스에 저장되지 않습니다.

  12. 12

    HTML (Php) 양식을 사용하여 MySQL 데이터베이스에 데이터를 추가하는 동안 PHP에서 정의되지 않은 색인 오류

  13. 13

    내 PHP 형식의 데이터베이스에서 편집 및 삭제가 실행되지 않습니다.

  14. 14

    데이터는 php, pdo의 데이터베이스에 추가되지 않습니다.

  15. 15

    등록 양식의 새 필드에 추가 된 값이 Spree에 저장되지 않습니다.

  16. 16

    양식의 드롭 다운 선택은 데이터베이스에 데이터를 저장하지 않습니다.

  17. 17

    양식의 사용자 등록 필드가 데이터베이스에 저장되지 않음

  18. 18

    데이터가 데이터베이스에서 양식으로 나오지 않습니다.

  19. 19

    Ember 양식 값이 정의되지 않았습니다.

  20. 20

    양식이 mysql 데이터베이스에 데이터를 삽입하지 않습니다.

  21. 21

    데이터베이스의 HTML 양식 <select> 데이터가 올바르게 표시되지 않음

  22. 22

    CodeIgniter가 데이터베이스에 양식 값을 제출하지 않음

  23. 23

    데이터베이스에 저장되지 않은 HTML 양식 데이터-Django

  24. 24

    save () 메서드는 양식 데이터를 데이터베이스 (Django ModelForm)에 저장하지 않습니다.

  25. 25

    HTML / PHP 양식은 MySQL 데이터베이스에 데이터를 삽입하지 않습니다.

  26. 26

    Laravel 경로, 양식은 데이터베이스에 데이터를 제출하지 않습니다.

  27. 27

    양식 제출 후 AngularJS 데이터가 정의되지 않았습니다.

  28. 28

    PHP 양식 제출이 데이터베이스에 삽입되지 않습니다.

  29. 29

    데이터베이스에 대한 양식 항목이 전송되지 않습니다.

뜨겁다태그

보관