嗨,我是網路開發的新手。我在使用flask,我有這樣的錯誤:
"無法建立'post'端點的URL。
"無法為端點'post'建立url。你是不是忘了指定['post_id']的值?"
我正試著為'post'建立網址。
我試圖在洗掉帖子中的評論后重定向該頁面。但是它把我帶到了 "500 Internal Server Error "頁面,當我點擊瀏覽器的回傳按鈕時,顯示了成功的Flash味精,并且評論被洗掉。
"routes.py"。
@app.route("/post/<int:post_id>">)
@login_required)
def post(post_id)。
post = Post.query.get_or_404(post_id)
return render_template("post.html", title="post", post=post)
@app. route("/post-comment/<int:post_id>", methods=['GET','POST'))
@login_required)
def comment_post(post_id)。
post = Post.query.get_or_404(post_id)
form = CommentForm()
if form.validate_on_submit()。
comment = Comment(body=form.body.data, post_id=post.id, author=current_user)
db.session.add(comment)
db.session.commit()
flash("您的評論已被添加到帖子中", "成功")
return redirect(url_for("comment_post", post_id=post.id, post=post)
return render_template("comment.html", title="評論文章", post_id=post.id, post=post, form=form)
@app.route("/comment-delete/<int:comment_id>", methods=['POST'/span>])
@login_required)
def delete_comment(comment_id)。
comment = Comment.query.filter_by(id=comment_id).first()
if comment.author != current_user:
abort(403)
db.session.delete(comment)
db.session.commit()
flash('您的評論已被洗掉!', '成功')
return redirect(url_for('post'))
"post.html和comment.html" - 都有url_for to delete_comment
{% for comment in post.comments %} 。
<table>
<tr>
<td>
{% if comment.author == current_user %}
<form action="{{url_for('delete_comment', comment_id=comment.id, post_id=post.id, post=post)}}" method="POST"/span>>
< input class="btn btn- danger" type="submit" value="delete">
</form>
{% endif %}
<小 class="text-muted"> {{ comment.author.username }}</small>
<p class="mb-1">{{ comment.body }}</p>
</td>
</tr>
</table>
{% endfor %}
DB
class User(db.Model, UserMixin)。
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
password = db.Column(db.String(60), nullable=False)
comments = db.relationship('Comment', backref='author', lazy=True)
posts = db.relationship('Post', backref='author', lazy=True)
def __repr__(self)。
return f "User('{self.username}')"。
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)
comments = db.relationship("Comment", backref="post", cascade="all, delete-orphan", lazy=True)
def __repr__(self)。
return f "Post('{self.title}', '{self.date_posted}')"/span>
class Comment(db.Model)。
id = db.Column(db.Integer, primary_key=True)
body = db.Column(db.String(100), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False)
def __repr__(self):
return f "Comment('{self.body}')"。
uj5u.com熱心網友回復:
在delete_comment函式中,當你重定向到post函式時,你必須同時傳遞post_id。
它應該是這樣的。
return redirect(url_for('post', post_id=post.id))。
為了使其發揮作用,你必須從資料庫中獲取帖子的ID。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/329833.html
標籤:
