我想拥有一个用户页面(/ 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
错误?
答案 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'
是通过网址传递的变量名称,而''
是默认值。