【问题标题】:select entries from database mysql in dropdown, python flask在下拉列表中从数据库 mysql 中选择条目,python 烧瓶
【发布时间】:2017-11-12 16:35:39
【问题描述】:

我想从 MySQL 的数据库表中选择数据。这是Python中的过程

@app.route('/formworkers.html')
def formworkers(): 
cursor = mysql.connection.cursor()
cur = cursor.execute("SELECT ID_worker, surname FROM workers")
return render_template('formworkers.html', workers0=cursor.fetchall())

Jinja2 中的模板

{% extends "layout.html" %}
    {% block body %}
    {% if session.logged_in %}
    <form action="" method=post class=add-worker >
      <dl>
        <dt>Surname:
        <dd><select name="worker0">
        {% for ID_pats, surname in workers0 %}
        <option value="{{ ID_worker }}">{{ surname }}</option>
        {% endfor %}
        </select>
        <br><br>
        <dd><input type=submit value="Submit">
      </dl>
    </form>
  {% endif %}
{% endblock %}

但下拉列表不包含来自数据库的数据(例如 [Ivanov, Petrov, Sidorov]),它包含值 [surname, surname, surname]。谢谢。

【问题讨论】:

  • 能否在模板中添加{{workers0}} 以检查视图发送的内容?
  • @PRMoureu,我写在模板&lt;option value="{{ workers0.ID_pats }}"&gt;{{ workers0.surname }}&lt;/option&gt;,但下拉列表是空的,但有3个空元素
  • @PRMoureu,写在for{{workers0}}之前?
  • 就在&lt;dd&gt;&lt;select name="worker0"&gt; 行上方,只是为了查看它包含的确切内容
  • @PRMoureu,它输出({'ID_worker': 1L, 'surname': u'\u0418\u0432\u0430\u043d\u043e\u0432'}, {'ID_worker': 2L, 'surname': u'\u041f\u0435\u0442\u0440\u043e\u0432'}, {'ID_worker': 3L, 'surname': u'\u0421\u0438\u0434\u043e\u0440\u043e\u0432'})

标签: python flask mysql-python


【解决方案1】:

查询将结果输出为字典列表,因此当您在 for 循环中解压缩它时,您只会得到一个键列表 "ID_worker""surname"

您可以更改模板如下to access the values

{% for worker in workers0 %}

<option value="{{ worker.ID_worker }}">{{ worker.surname }}</option>

{% endfor %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 2010-09-17
    相关资源
    最近更新 更多