从数据库中读取并传递给Flask中的JavaScript

时间:2014-02-22 18:35:59

标签: javascript python flask

Python和Flask全新。尝试从数据库读取并将数据传递给Javascript。拉我的头发试图让它工作,因为我认为这是一个小的

在我的python脚本中,我有:

@app.route('/report')
def test():
    db = get_db()
    cur = db.execute('select * from emails where id=1')
    emails = cur.fetchall()
    print emails
    return render_template('report.html', name=links, emails=emails)

然后在我的javascript中我有:

{% for entry in emails %}
    var getEmail = {{entry.1}}
    window.alert(getEmail);
    emailArray.push(getEmail)
{% endfor %}

打印电子邮件正在输出[(1, u'e')],这是正确的,但window.alert给了我“未定义”。如果我将其更改为var getEmail = {{entry.0}},它会从数据库中为我提供正确的ID值。谁能指出我哪里出错?

1 个答案:

答案 0 :(得分:2)

您正在生成:

var getEmail = e;

由于e未定义,因此无效。

你想引用你的变量;使用Flask附带的tojson filter以及safe(以防止引用生成的"引号):

var getEmail = {{ entry.1|tojson|safe }};

将生成有效的JSON,这是Javascript的一个子集。现在您的行将显示为:

var getEmail = "e";

或者,一次性设置emailArray列表(不需要emails以上的循环):

var emailArray = {{ emails|map(attribute=1)|list|tojson|safe }};

将获取您的emails列表,选择每个元组的第二个元素,并将结果列表输出为JSON列表,从而产生:

var emailArray = ["e"];