带ID的Flask用户页面

时间:2015-06-20 10:09:10

标签: python flask

我想拥有一个用户页面(/ users /)。 当您只打开/ users /时,您应该看到自己的用户配置文件(如果您已登录,否则:错误) 当您使用get命令时,例如/ users /?uid = 2999,它应该使用uid = 2999来填充用户的用户信息。 get get,如果您已登录,则会看到您自己的个人资料。 但是,如果您未登录,则会出现以下错误:

Bad Request

The browser (or proxy) sent a request that this server could not understand.

这是代码段:

@app.route('/users/')
def users():
    if 'logged_in' in session:
        ret = 0
        user = session['uid']
        c, conn = dbconnect.conn()
        data = c.execute("SELECT * FROM users WHERE uid = (%s)", (user))
        if int(data) == 0:
            flash("Error! Please send a report at martin@tekkkz.com!")
        else:
            data = c.fetchone()
            ret = 1
        c.close()
        conn.close()
        gc.collect()
        if ret:
            return render_template("users.html", nav=2, user=data)
    elif request.args['uid']:
        ret = 0
        user = request.args['uid']
        c, conn = dbconnect.conn()
        data = c.execute("SELECT * FROM users WHERE uid = (%s)", (user))
        if int(data) == 0:
            flash("Invalid User-ID. This user doesn't exist!")
        else:
            data = c.fetchone()
            ret = 1
        c.close()
        conn.close()
        gc.collect()
        if ret:
            return render_template("users.html", nav=2, user=data)
    else:
        flash("You need to be logged in to see your own profile!")
    return redirect(url_for('login'))

为什么会出现Bad Reqquest错误?

2 个答案:

答案 0 :(得分:1)

当你没有登录时,问题是这一行,并且' uid'不在查询字符串中。

elif request.args['uid']:

当无法在args中找到密钥时,Flask会引发HTTP错误。

相反,你应该

elif 'uid' in request.args:

答案 1 :(得分:0)

问题在于使用URL访问变量。 当Flask在网址中找不到Key时,会引发 KeyError 应使用以下语法

访问变量
any_var = request.args.get('key', '')

其中'key'是通过网址传递的变量名称,而''是默认值。

Here's link to Flask Request