質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Q&A

解決済

3回答

2222閲覧

saveボタンからの画面遷移

PYPP

総合スコア51

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

0グッド

0クリップ

投稿2017/02/08 06:33

編集2017/02/11 17:43

###前提・実現したいこと
DjangoGirlsというチュートリアルに従って、PythonのDjangoを使いblogを作成しようとしています。そこで、ブログの投稿ページは作成し、データをデータベースに保存することはできたものの、次の画面に遷移することができずエラーが出てしまいました。
参照ページ

###発生している問題・エラーメッセージ

Page not found (404) Request Method: GET Request URL: http://127.0.0.1:8000/post/21/edit/posts.views.post_detail Using the URLconf defined in blog.urls, Django tried these URL patterns, in this order: ^$ ^post/(?P<pk>[0-9]+)/$ ^post/new/$ [name='post_new'] ^post/(?P<pk>[0-9]+)/edit/$ ^admin/ The current URL, post/21/edit/posts.views.post_detail, didn't match any of these. You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.

###該当のソースコード
views.py

def post_edit(request, pk): post = get_object_or_404(Post, pk=pk) if request.method == "POST": form = PostForm(request.POST, instance=post) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.save() return redirect('posts.views.post_detail', pk=post.pk) else: form = PostForm(instance=post) return render(request, 'posts/post_edit.html', {'form': form})

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

def post_edit(request, pk): post = get_object_or_404(Post, pk=pk) if request.method == "POST": form = PostForm(request.POST, instance=post) if form.is_valid(): post = form.save(commit=False) post.author = request.user post.save() return redirect('/post/' + str(post.pk) + '/') else: form = PostForm(instance=post) return render(request, 'posts/post_edit.html', {'form': form})

として見てください。

今のソースだとGetリクエストにて編集画面に遷移してきたら、詳細画面へリダイレクトするようになってます。
elsereturnのところはrenderを使ってください。
POSTの場合に編集後にredirectで詳細画面へ遷移させれば良いかと思います。

投稿2017/02/09 08:36

koichi-ezato

総合スコア237

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PYPP

2017/02/09 08:51

正常に動作しました!
PYPP

2017/02/09 08:51

ご回答いただきありがとうございます。
guest

0

post_editのredirectを

return redirect('/post/' + str(post.pk) + '/')

に変更しても変わらないですか?

投稿2017/02/08 17:45

koichi-ezato

総合スコア237

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PYPP

2017/02/09 07:46

ご返信が遅くなってしまい申し訳ありません。現在確認しましたところ、そのように変更すると投稿の詳細画面に遷移後、編集ボタンを押しても編集画面に移れなくなってしまいました。
PYPP

2017/02/09 07:51

追記しました。
koichi-ezato

2017/02/09 07:59

views.pyのpost_detailとpost_detail.htmlのソースコードはどうなってますか?
PYPP

2017/02/09 08:21

追記しました。post_editの編集に当たっては何も変えてません。
koichi-ezato

2017/02/09 08:37

ソースコードが含まれるので、新たしく回答に修正案を記載しました。
guest

0

views.pyのpost_new関数の

return redirect('posts.views.post_detail', pk=post.pk)

return redirect('/post/' + str(post.pk) + '/')

に変更して見たらどうでしょう。

リダイレクト先のURLをハードコードで渡してあげれば、リダイレクトはしてくれると思います。

もし、編集画面へリダイレクトさせたいのであれば、こんな感じで

return redirect('/post/' + str(post.pk) + '/edit/')

投稿2017/02/08 15:45

koichi-ezato

総合スコア237

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PYPP

2017/02/08 17:32

ご回答いただきありがとうございます!それでも同様のエラーが出てしまいました。 '/edit/'でも試して見ましたが同様でした。
PYPP

2017/02/08 17:39

再度確認したところ、新しく投稿する際には問題ありませんでした!しかし、既存の投稿を編集する際には、エラーが出てしまっています。
koichi-ezato

2017/02/08 17:40

エラー画面に表示されているRequest URLはどう表示されてますか?
PYPP

2017/02/08 17:42

ここに載せたPage not foundと全く同じです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問