Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ID为的Flask用户页_Python_Flask - Fatal编程技术网

Python ID为的Flask用户页

Python ID为的Flask用户页,python,flask,Python,Flask,我想要一个用户页(/users/)。 当您打开just/users/时,您应该会看到自己的用户配置文件(如果您已登录,则为:Error) 当您使用get命令时,如/users/?uid=2999,它应该使用uid=2999读取用户的用户信息。 get有效,如果您已登录,您将看到自己的个人资料也有效。 但如果您未登录,则会出现以下错误: Bad Request The browser (or proxy) sent a request that this server could not und

我想要一个用户页(/users/)。 当您打开just/users/时,您应该会看到自己的用户配置文件(如果您已登录,则为:Error) 当您使用get命令时,如/users/?uid=2999,它应该使用uid=2999读取用户的用户信息。 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'))

为什么会出现错误请求?

当您未登录且“uid”不在查询字符串中时,问题是这一行

elif request.args['uid']:
Flask在args中找不到密钥时会引发HTTP错误

相反,你应该这样做

elif 'uid' in request.args:

问题在于使用URL访问变量。 当Flask在URL中找不到
键时,它会引发keyrerror
应使用以下语法访问变量

any_var = request.args.get('key', '')
其中,
'key'
是通过URL传递的变量名,
'
是默认值