【问题标题】:Dynamic Loading on Flask Site with Unique URL具有唯一 URL 的 Flask 站点上的动态加载
【发布时间】:2021-01-01 13:49:52
【问题描述】:

我正在构建一个 Flask 站点,该站点可以动态加载一些信息,例如时间,但我在使用 jQuery 进行 AJAX 时遇到了一些问题。

按照烧瓶网站上的示例https://flask.palletsprojects.com/en/1.1.x/patterns/jquery/

我想将其更改为基于用户唯一 ID 的动态 URL,而不是静态 URL。

Python 文件:

from flask import Flask, jsonify, render_template, request
app = Flask(__name__)

@app.route('/_add_numbers/<UNIQUEID>')
def add_numbers():
    a = request.args.get('a', 0, type=int)
    b = request.args.get('b', 0, type=int)
    return jsonify(result=a + b)

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

HTML

<script type=text/javascript>
  $(function() {
    $('a#calculate').bind('click', function() {
      $.getJSON($SCRIPT_ROOT + '/_add_numbers/UNIQUEID', {
        a: $('input[name="a"]').val(),
        b: $('input[name="b"]').val()
      }, function(data) {
        $("#result").text(data.result);
      });
      return false;
    });
  });
</script>
<h1>jQuery Example</h1>
<p><input type=text size=5 name=a> +
   <input type=text size=5 name=b> =
   <span id=result>?</span>
<p><a href=# id=calculate>calculate server side</a>

我不知道如何将唯一 ID 放入 HTML。非常感谢任何帮助!

【问题讨论】:

    标签: javascript python html ajax flask


    【解决方案1】:

    有多种方法可以做到这一点。我建议简单地将用户 ID 添加到模板上下文中,使用 render_template("index.html", user_id=current_user.id)(确保从烧瓶中导入 current_user。如果用户登录,这将返回一个用户 ID,如果没有,则返回 None。然后你可以执行以下操作:

    $(function() {
        $("a#calculate").bind("click", function() {
        $.getJSON($SCRIPT_ROOT + "/_add_numbers/{{ user_id }}",
           etc etc: your code goes here
           )}
        )}
    

    应该可以的。

    或者,您实际上可以在模板中使用 current_user.id 的值(如果您觉得自己理解的话),因为无论如何这都是由 Jinja 隐式传递的。 o 将{{ user_id }} 替换为`{{ current_user.id }}。

    【讨论】:

    • 谢谢,这绝对有帮助!我的唯一 ID 实际上来自我的 flask_sqlalchemy 数据库。我一直以 URL 的形式将它传递给每个路由,例如 events/7。我可以使用这个数据库唯一值代替 'current_user.id' 吗?
    • 是的,您可以将任何值传递给模板。在这种情况下,它将是发出请求的 id 的值
    猜你喜欢
    • 2019-05-18
    • 1970-01-01
    • 2012-05-17
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    相关资源
    最近更新 更多