Flask 和 Ajax current_user.id returns 错误

Flask and Ajax current_user.id returns error

尝试在 Flask 上发出 ajax POST 请求,一切正常,除非涉及 current_user ajax请求。

例如:

python

@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

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

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

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

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