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

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

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

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

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1234閲覧

DjangoでGETの処理をしながら次のTemplateViewに繋げる処理の仕方が分かりません

Nisycon

総合スコア30

Django

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

Python 3.x

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/08/03 16:26

■実現したいこと
大まかに説明をすると、
①画像をアップロード(Formview1/upload.html)
②その画像に処理を加える(Fromview2/proc.html)
③処理を加えた画像に対して結果を返す(result.html)

■大まかなviews.py

python

1class Uploadview(generic.edit.FormView): 2 ## FormやTemplateの指定 3 def form_valid(self, form): 4 5 ## uploadの処理 6 7 ## Uploadというモデルに保存し、保存したモデルのpkを一緒に渡す 8 return redirect('app:proc', pk=pk) 9 10class ProcView(generic.edit.FormView) 11 ## FormやTemplateの指定 12 def get_context_data(self, **kwargs): 13 context = super().get_context_data(**kwargs) 14 upload_pk = self.kwargs['pk'] 15 upload_item = Upload.object.get(pk=upload_pk) 16 17 ## proc.htmlに表示するためのcontext 18 return({'upload': upload_item,}) 19 20 def form_valid(self, form): 21 ## proc.htmlでPOSTされた情報をもとに、upload_itemに処理を加える。 22 23 ## 処理後、飛ばすページ 24 return redirect('app:result')

■分からないこと
上記のコードのように、upload_itemの変数を使いたいので、
get_context_dataにform_validをネストさせたのですが、

No URL to redirect to. Provide a success_url.

というエラーが出て結果ページが表示されない状態です。フォームの連続した処理を行うため、一番最初のフォームデータを引き継ぐためにはどうすればいいでしょうか?

ご意見いただけると非常に助かります。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

自己解決

ネストせず、同様にkwargsを使って別のクラスから継承したらできました。

python

1class ProcView(generic.edit.FormView) 2 ## FormやTemplateの指定 3 def get_context_data(self, **kwargs): 4 upload_pk = self.kwargs['pk'] 5 upload_item = Upload.object.get(pk=upload_pk) 6 7 ## proc.htmlに表示するためのcontext 8 return({'upload': upload_item,}) 9 10 def form_valid(self, form): 11 upload_pk = self.kwargs['pk'] 12 upload_item = Upload.object.get(pk=upload_pk) 13 14 ## proc.htmlでPOSTされた情報をもとに、upload_itemに処理を加える。 15 16 ## 処理後、飛ばすページ 17 return redirect('app:result')

投稿2018/08/06 10:53

Nisycon

総合スコア30

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

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

0

エラーはredirectするURLがないって言ってるので、

return redirect('app:proc', pk=pk)

return redirect('app:result')

の遷移先がurls.pyに書いてないのでは?

でもそもそも

①画像をアップロード(Formview1/upload.html)
②その画像に処理を加える(Fromview2/proc.html)
③処理を加えた画像に対して結果を返す(result.html)

ではなく

①画像をアップロードして処理を加えて(Formview1/upload.html)
②処理を加えた画像に対して結果を返す(result.html)

ではダメなのでしょうか?

どうしてもリダイレクト時にパラメータを引き継ぎたいなら以下の記事が参考になるかも。
Django、リダイレクト時にGETパラメータも渡す

投稿2018/08/03 16:57

lightwill

総合スコア962

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

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

Nisycon

2018/08/04 09:03

>遷移先がurls.pyに書いてないのでは? 書いています。 >①画像をアップロードして処理を加えて(Formview1/upload.html) >②処理を加えた画像に対して結果を返す(result.html) >ではダメなのでしょうか? これもだめなんです。。。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問