简体   繁体   中英

Flask Application - view posts of current user only

Beginner programmer here. Trying to create a flask app which users can post into. I am looking to create a "home page" where users can see their posts rather than every users posts.

Here is my code:

routes.py

@app.route("/home")
def home():
    posts = Post.query.all()
    return render_template('home.hmtl', posts=posts)

models.py

class User(db.Model, UserMixin):
  id = db.Column(db.Integer, primary_key=True)
  username = db.Column(db.String(20), unique=True, nullable=False)
  email = db.Column(db.String(120), unique=True, nullable=False)
  image_file = db.Column(db.String(20), nullable=False, default='default.jpg')
  password = db.Column(db.String(60), nullable=False)
  posts = db.relationship('Post', backref='author', lazy=True)

  def __repr__(self):
     return f"User('{self.username}', '{self.email}', '{self.image_file}')"


class Post(db.Model):
  id = db.Column(db.Integer, primary_key=True)
  title = db.Column(db.String(100), nullable=False)
  date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
  content = db.Column(db.Text, nullable=False)
  user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

  def __repr__(self):
     return f"Post('{self.title}', '{self.date_posted}')"

Any help would be greatly appreciated!

First of all get, get the current user using session or jwt's . Then you can now query your database to get posts by the current user only.

You can use current_user case

@app.route("/home",  methods=['GET', 'POST'])
def home():
posts = current_user.posts
return render_template('home.html', posts=posts)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM