mbellamina
Profilo di
Nome | mbellamina |
---|---|
Indirizzo email | n/a |
Messaggi | 1 |
-
- 2017-01-03 22:00:48
- SITO WEB- PROBLEMA
- Forum >> Programmazione Python >> Web e Reti
- Salve, io e una mia amica stiamo scrivendo un programma, ma stiamo riscontrando un problema nel codice. Il sito è un blog dove l'utente per vedere i post, scriverli e commentarli deve registrarsi. Il problema è che quando l'utente si logga può scrivere post , ma è l'unico a vederli e quando commenta li salva nel database ma purtroppo non vengono visualizzati sullo schermo. Scrivo qua sotto il pezzo di codice interessato.
Grazie del tempo dedicatomi.
DA VIEWS:
@app.route('/user/<username>/post/<post_id>/', methods=['GET', 'POST']) def post(username, post_id): user = User.query.filter_by(username=username).first() post = Post.query.filter_by(id=post_id).first() form = CommentForm() if user is None: flash('user: {} not found'.format(username)) return redirect(url_for('home')) if post is None: flash('Post No.: {} not found'.format(post_id)) return redirect(url_for('user', username=username)) if request.method == 'GET': if not g.is_logged_in: comments = Comment.query.filter_by(post_id=post.id).order_by(Comment.created_on.desc()).all() flash('please login to leave a comment') return render_template('post.html', visitor=g.user, user=user, post=post, comments=comments, form=form) else: comments = Comment.query.filter_by(post_id=post.id).order_by(Comment.created_on.desc()).all() return render_template('post.html', visitor=g.user, user=user, post=post, comments=comments, form=form) if request.method == 'POST': if not form.validate(): return redirect(url_for('post', username=username, post_id=post_id)) else: new_comment = Comment(body=form.body.data, author=g.user) print 'dicks ' + form.post_id.data db.session.add(new_comment) db.session.commit() return redirect(url_for('post', username=username, post_id=post.id))
DA MODELS:
class User(db.Model): __tablename__ = "users_user" id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(USER.MAX_USERNAME), unique=True) email = db.Column(db.String(USER.MAX_EMAIL), unique=True) pwdhash = db.Column(db.String(USER.MAX_PASSW)) uuid = db.Column(db.String(66)) created_on = db.Column(db.DateTime, default = db.func.now()) verified = db.Column(db.Boolean(), default = False) status = db.Column(db.Integer, default=USER.ALIVE) role = db.Column(db.Integer, default=USER.USER) posts = db.relationship('Post', backref='author', lazy='dynamic') comments = db.relationship('Comment', backref='author', lazy='dynamic') followed = db.relationship( 'User', secondary = followers, primaryjoin = (followers.c.follower_id == id), secondaryjoin = (followers.c.followed_id == id), backref = db.backref('followers', lazy='dynamic'), lazy='dynamic' ) def __init__(self, username, email, password): self.username = username self.email = email self.set_pwdhash(password) self.uuid = str(uuid.uuid1()) def __repr__(self): return '<User: {}>'.format(self.username) def set_pwdhash(self, password): self.pwdhash = generate_password_hash(password) def check_pwdhash(self,password): return check_password_hash(self.pwdhash, password) def follow(self, user): if not self.is_followed(user): self.followed.append(user) return self def unfollow(self, user): if self.is_followed(user): self.followed.remove(user) return self def is_followed(self, user): return self.followed.filter(followers.c.followed_id == user.id).count() > 0 def following(self): return self.followed.filter(followers.c.follower_id == self.id).all() def followed_posts(self): return Post.query.join(followers, (followers.c.followed_id == Post.user_id)).filter(followers.c.follower_id == self.id).order_by(Post.created_on.desc()) class Post(db.Model): __tablename__ = "users_post" id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users_user.id')) title = db.Column(db.String(140), default=None) body = db.Column(db.String(POST.MAX_BODY), default=None) created_on = db.Column(db.DateTime, default=db.func.now()) comments = db.relationship('Comment', backref='parent', lazy='dynamic') def __init__(self, title, body, author): self.title = title self.body = body self.author = author def __repr__(self): return '<Post: {}>'.format(self.title[:25]) class Comment(db.Model): __tablename__ = "posts_comment" id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users_user.id')) post_id = db.Column(db.Integer, db.ForeignKey('users_post.id')) body = db.Column(db.String(POST.MAX_BODY), default=None) created_on = db.Column(db.DateTime, default=db.func.now()) def __init__(self, body, author): self.body = body self.author = author def __repr__(self): return '<Comment: {}>'.format(self.body[:25]
DA FORMS:class PostForm(Form): title = StringField( "New Post Title", [ DataRequired("Please title your post"), Length( max=140, message="This title exceeds the 140 character limit" ) ] ) body = TextAreaField( "New Post", [ DataRequired("Please enter a new post"), Length( max=POST.MAX_BODY, message="This post exceeds the 10,000 character limit" ) ] ) submit = SubmitField("Post") def __init__(self, *args, **kwargs): Form.__init__(self, *args, **kwargs) def validate(self): if not Form.validate(self): return False class CommentForm(Form): body = TextAreaField( "New Comment", [ DataRequired("Please enter a new comment"), Length( max=1000, message="this comment exceeds the 1000 character limit") ] ) post_id = StringField(widget=HiddenInput()) submit = SubmitField("Comment") def __init__(self, *args, **kwargs): Form.__init__(self, *args, **kwargs) def validate(self): if not Form.validate(self): return False
--- Ultima modifica di ㎝ in data 2017-01-03 22:21:37 ---