GoogleAppEngineのオライリーをベースに このブログの投稿部分を作ってみたのですが、 使っていて問題が生じてきたので今後の改善予定をメモ。
if request.method == 'GET': if entry_id: # entry_idから記事をフェッチして # 編集出来るようにフォームを開く else: # 新規フォームを開く elif request.method == 'POST': if entry_id: # entry_idに上書き保存 else: # 新規保存(idを付与する)
みたいに1つのactionで読み書きが出来るように なっているのですが、この方式だと一つ問題が。
ブログにプレビュー機能が無いため、書いた記事を確認するためには 非公開にして投稿を行い確認をしています。
そうすると何が起こるかとういうと、 新規投稿→記事確認後、戻る→再編集→再投稿 のような操作をした時に、記事が何個も登録されてしまうのです。 運用方法に問題があるのかもしれませんが、 すでに何回かやらかしているので、 これはシステムとして改善すべきだと思いました。
どうして記事が複数登録されてしまうのかは単純で、 新規作成時には投稿IDが付与されていないからです。 戻るを押して記事IDを持たないページに移動してしまい そこで投稿をしてしまうと、そのたびに別記事が生成されてしまいます。
これをどう解決すべきか考えてみた時、 編集の画面の段階で記事IDを付与しておくのが 一番シンプルそうです。 要するに 新規投稿ボタン→記事IDを付与した編集画面にリダイレクト→(投稿) みたいに1アクション挟んでみようと思ってます。 こうすることで編集画面に戻ってしまっても多重投稿を防げそうです。 (実装についてはまた後ほどやってみます)