복붙노트

[PYTHON] 플라스크를 사용하여 선택 태그에서 가치 얻기

PYTHON

플라스크를 사용하여 선택 태그에서 가치 얻기

플라스크에 익숙하지 않아 셀렉트 태그에서 값을 가져 오는 데 문제가 있습니다. 나는 나쁜 요청을 반환하는 request.form [ 'comp_select']을 시도했다. 그러나 request.form.get ( 'comp_select')를 사용하면 내 반환 페이지에 빈 목록 "[]"이 반환됩니다.

내 html :

<form class="form-inline" action="{{ url_for('test') }}">
  <div class="form-group">
    <div class="input-group">
        <span class="input-group-addon">Please select</span>
            <select name="comp_select" class="selectpicker form-control">
              {% for o in data %}
              <option value="{{ o.name }}">{{ o.name }}</option>
              {% endfor %}                                              
            </select>
    </div>
    <button type="submit" class="btn btn-default">Go</button>
  </div>
</form>

내 app.py :

@app.route("/test" , methods=['GET', 'POST'])
def test():
    select = request.form.get('comp_select')
    return(str(select)) # just to see what select is

게시물에 대한 내 서식이 해제되어 있으면 미리 죄송합니다 (Stack Overflow에 새로 추가됨).

해결법

  1. ==============================

    1.당신이 제공 한 것을 확실하게 알기는 어렵지만,
    요소에 method = "POST"를 추가해야한다고 생각합니다.

    당신이 제공 한 것을 확실하게 알기는 어렵지만, 요소에 method = "POST"를 추가해야한다고 생각합니다.

    요청 개체에 대한 플라스크 doc에서 :

    따라서 POST를 통해 양식을 제출하는 경우 request.form.get ()을 사용하십시오. 양식을 GET을 통해 제출하는 경우 request.args.get ()을 사용하십시오.

    이 앱은 원하는대로 작동합니다.

    flask_app.py:

    #!/usr/bin/env python
    from flask import Flask, flash, redirect, render_template, \
         request, url_for
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template(
            'index.html',
            data=[{'name':'red'}, {'name':'green'}, {'name':'blue'}])
    
    @app.route("/test" , methods=['GET', 'POST'])
    def test():
        select = request.form.get('comp_select')
        return(str(select)) # just to see what select is
    
    if __name__=='__main__':
        app.run(debug=True)
    

    templates / index.html

    <form class="form-inline" method="POST" action="{{ url_for('test') }}">
      <div class="form-group">
        <div class="input-group">
            <span class="input-group-addon">Please select</span>
                <select name="comp_select" class="selectpicker form-control">
                  {% for o in data %}
                  <option value="{{ o.name }}">{{ o.name }}</option>
                  {% endfor %}
                </select>
        </div>
        <button type="submit" class="btn btn-default">Go</button>
      </div>
    </form>
    
  2. from https://stackoverflow.com/questions/32019733/getting-value-from-select-tag-using-flask by cc-by-sa and MIT license