【问题标题】:Flask and Ajax current_user.id returns errorFlask 和 Ajax current_user.id 返回错误
【发布时间】:2020-09-24 19:37:40
【问题描述】:

尝试在 Flask 上发出 ajax POST 请求,除了 ajax 请求中涉及到与 current_user 相关的任何内容外,一切正常。

例如:

蟒蛇

@app.route("/example", methods=['POST', 'GET'])
def example():
    if request.method == 'POST':
        mynumber = request.form['number']
        whatdoesntwork = mynumber + current_user.id
        return whatdoesntwork

javascript

$(document).ready(function () {
    
    $('.button').on('click', function () {
        var myNumber = 100;

        var toPost = {
            number : myNumber
        };

        $.ajax({
            type : 'POST',
            url : '/example',
            data : toPost,
            success : function (returnValue) {
                console.log(returnValue);
            },
            error : function() {
                console.log("why doesnt it work?")
            }

        });

    });
});

current_user.whatever 在代码中的其他任何地方都可以正常工作 例如:

@app.route("/example", methods=['POST', 'GET'])
def example():
    flash(current_user.id, 'success)
    return render_template('eg.html')

上面的代码会在网页中将用户ID显示为flash消息

但是,每当 current_user.whatever 涉及 ajax 请求时,它都会引发错误,并在控制台上显示错误 500。

第一次在stackoverflow上发帖,如果问题不直接,请见谅

【问题讨论】:

    标签: python ajax flask flask-login


    【解决方案1】:

    下次您在这里提问时,请提供您的错误输出。但是,我想我知道发生了什么。

    Flask-Login 用户 ID 的类型为 ObjectId。它们看起来像这样:

    {{
        $oid : 'xxxxxxxxxxxxxxxxxxxxxx'
    }}
    

    您可以通过简单地调用str(current_user.id) 来序列化它们。

    在你的情况下:

    @app.route("/example", methods=['POST', 'GET'])
    def example():
    if request.method == 'POST':
        mynumber = request.form['number']
        whatdoesntwork = mynumber + str(current_user.id)
        return whatdoesntwork
    

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 1970-01-01
      • 2017-11-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多