Python で Flask フレームワークを使用してブログを作成しています。
投稿を表示するためのビュー/URLは次のとおりです。
@post_blueprint.route('/post/<int:year>/<int:month>/<title>', methods=['GET'])
def get_post(year, month, title):
try:
title = title.replace('-', ' ')
post = Post.query.filter(Post.title == title).one()
post.comment_form = UserCommentForm()
except NoResultFound:
raise
return render_template('show_single_post.html', post=post)
上記のコードでは、ユーザーがコメントを投稿できるようにするコメント フォームも渡しています。その後、この投稿リクエストを受け取るためのビュー/URL を書きました。
@post_blueprint.route('post/<int:post_id/comment/add/', mehtods=['POST'])
def add_comment(post_id):
post = Post.query.get(post_id)
if not post:
raise Exception
if request.method == 'POST':
form = UserCommentForm(request.form)
if form.validate():
try:
user = User.query.\
filter(User.email == form.email.data).one()
except NoResultFound:
user = User(form.username.data, form.email.data,
form.website.data or None)
try:
comment = Comment(form.comment.data, post_id)
comment.author = user
db_session.add(comment)
db_session.commit()
except IntegrityError:
raise
return redirect(url_for('.get_post', year=post.posted_on.year,
month=post.posted_on.month,
title=post.title.replace(' ','-')
)
)
上記のビューでは、投稿が存在することを確認するために、db から投稿オブジェクトにアクセスしています。ユーザーが存在しない場合は作成し、コメントを保存します。
今私の問題は、完全な Post オブジェクトにアクセスする代わりに、count クエリを実行して投稿の存在を簡単にテストできたことですが、投稿属性が必要なため、完全なオブジェクトを取得する必要があります。
私のURLスキームがあまり良くないか、ここでできるもっと良いことがあると思います!
これを改善できるかどうか、またどのように改善できるかを誰かに教えてもらえますか?