gpt4 book ai didi

javascript - 在 Flask 中使用 AJAX 添加上下文变量

转载 作者:行者123 更新时间:2023-12-03 09:59:50 27 4
gpt4 key购买 nike

我有一个需要通过 AJAX 填充的选择表单。考虑这个简单的例子:

templates/index.html

<!DOCTYPE html>
<html>
<body>

<select id="elements">
</select>

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
$.ajax({
url: '/get-something/5',
type: "GET",
dataType: "html",
success: function (msg) {
$('#elements').html(msg)
}
})
</script>
</body>
</html>

app.py

from flask import Flask, render_template

app = Flask(__name__)


@app.route('/')
def index():
return render_template('index.html')


@app.route('/get-something/<int:n>')
def get_something(n):
result = ''
for i in xrange(n):
result += "<option value='%s'>%s</option>\n" % (i, i)
return result


if __name__ == '__main__':
app.run(debug=True)

工作得很好,这就是我所做的。但是,我想知道是否存在另一种(更好的?)方法。

例如,我更喜欢有一个上下文变量来更好地将 View 与 Controller 分开。像这样的事情:

app.modified.py

@app.route('/get-something/<int:n>')
def get_something(n):
return dict(elements=xrange(n))

templates/index.modified.html

<select id="elements">
{% for elem in elements %}
<option value='{{ elem }}'>{{ elem }}</option>\n
{% endfor %}
</select>

不幸的是,这不起作用。它说,“dict”对象不可调用

请问有什么帮助吗?这可能吗?请注意,我不想重新加载页面,我想要与 AJAX 示例中相同的行为。

最佳答案

使用index.modified,你需要做这样的事情:

return render_template('index.modified.html',
elements=your_dictionary)

不尝试返回字典(这就是您收到该错误的原因)。请参阅http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-ii-templates更多示例

关于javascript - 在 Flask 中使用 AJAX 添加上下文变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631759/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com