2015-06-20 3 views
1

Я хочу иметь страницу пользователя (/ users /). Когда вы открываете just/users /, вы должны увидеть свой собственный профиль пользователя (если вы вошли в систему, иначе: Ошибка) Когда вы giev получаете команду, например/users /? Uid = 2999, она должна лазировать информацию о пользователе пользователь с uid = 2999. Работает, если вы вошли в свой аккаунт, вы также видите свой профиль. Но если вы не авторизованы, есть следующие ошибки:Страница пользователя Flask с ID

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 [email protected]!") 
     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 ошибка?

ответ

1

Проблема в этой строке, когда вы не вошли в систему, а «uid» не находится в строке запроса.

elif request.args['uid']: 

Флажок вызывает ошибку HTTP, когда ему не удается найти ключ в аргументах.

Вместо этого вы должны иметь

elif 'uid' in request.args: 
0

Проблема с переменным доступ с помощью URL. Когда колба не может найти Key в URL это поднять исключение KeyError Переменные должны быть доступны с помощью следующего синтаксиса

any_var = request.args.get('key', '') 

Где 'key' это имя переменной передается через URL и '' значения по умолчанию.

Here's link to Flask Request

Смежные вопросы