Flask: Личные сообщения - Python

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Нужна помощь. Я делаю своеобразную соц.сеть на Flask и столкнулся с проблемой, что пользователи не могут увидеть свои сообщения. Я думаю что проблема стоит с filter() и не правильное его написание. Я во Flask не давно начал разбираться и особо много не знаю, кароче нуб.
Листинг программы
  1. @app.route('/message/<nickname>', methods=['GET', 'POST'])
  2. @login_required
  3. def message(nickname=None):
  4. if nickname is None:
  5. return redirect(url_for('message', nickname=current_user.name))
  6. if request.method == "POST":
  7. new_message = Messages(message=request.form.get("messages"),
  8. mess=current_user)
  9. g.db.add(new_message)
  10. g.db.commit()
  11. messages = g.db.query(Messages.message, Users.name).filter(
  12. and_(Users.name == current_user.name, Users.name == nickname)).join(Users).order_by(Messages.time).all()
  13. return render_template('message.html',
  14. message=messages)
Как видно я завожу сообщение в базу. А потом в переменную "message" я передаю эти сообщения из базы, но сообщения я пытаюсь взять именно конкретных пользователей, сообщения пользователя из адресной строки и текущего пользователя, тем самым что и получается личные сообщения. Но у меня попросту сообщения не отображаются, ошибок нет, но в базе сообщения есть. Если надо больше кода могу отослать. Пожалуйста пишете по "Русски", я новичок и большинство терминов не понимаю. Заранее Спасибо.

Решение задачи: «Flask: Личные сообщения»

textual
Листинг программы
  1. @app.route('/message/<nickname>', methods=['GET', 'POST'])
  2. @login_required
  3. def message(nickname=None):
  4.     if nickname is None:
  5.         return redirect(url_for('message', nickname=current_user.name))
  6.     user = g.db.query(Users).filter_by(name=nickname).first()
  7.     user_cur = current_user
  8.     if request.method == "POST":
  9.         new_message = Messages(message=request.form.get("messages"),
  10.                                user_to=user.id,
  11.                                mess=current_user)
  12.         g.db.add(new_message)
  13.         g.db.commit()
  14.     messages = g.db.query(Messages.message, Users.name, Messages.user_id).join(Users).filter(
  15.         or_(and_(Messages.user_id == user_cur.id, Messages.user_to == user.id),
  16.             and_(Messages.user_id == user.id, Messages.user_to == user_cur.id))).order_by(Messages.time).all()
  17.     return render_template('message.html',
  18.                            message=messages,
  19.                            user=user,
  20.                            user_cur=user_cur,
  21.                            nickname=nickname)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут