前提・実現したいこと
Django,python3でWEBシステムを開発しています。
FormViewの中で、def form_validで取得した値を、メールで使用せずにget_context_dataの中で使用したいです。
success_urlで遷移するテンプレートを、def form_valid(self, form):のフォームを表示するものと同じにして、フォームがサブミットされた後に取得した値を表示するようにしたいです。
form_validの中では値が取得できる事を確認できるのですが、その後にどのようにしてget_context_dataで使えるようにできるかがわかりません。
ご教授いただけないでしょうか?
下記コードの、#②printテストのところがうまくいきません、#①printテストは、データが表示されます。
該当のソースコード
forms.py
python
1class SampleForm(forms.ModelForm): 2 class Meta: 3 model = sampleDb 4 fields = ('no','date') 5 6 def __init__(self, *args, **kwargs): 7 super().__init__(*args, **kwargs) 8 9 def send_email(self): 10 no = self.cleaned_data['no'] 11 date = self.cleaned_data['date'] 12 return no, date
views.py
python
1class SampleView(generic.FormView): 2 template_name = 'form.html' 3 form_class = SampleForm 4 success_url = reverse_lazy('main:form') 5 6 data = [] 7 8 def form_valid(self, form): 9 data = form.send_email() 10 print(data) # ①printテスト 11 return super().form_valid(form) 12 13 def get_context_data(self, **kwargs): 14 print(data) # ②printテスト 15 context = super().get_context_data(**kwargs) 16 context['data'] = data 17 return context
def form_valid(self, form):で取得した値を、スコープ外となるdef get_context_data(self, **kwargs):でも使用できるように、それぞれの外に、data = []と変数を作っていますが、こちらがうまく機能しません。
試したこと
def get_context_data(self, **kwargs):の中で、data = form.send_email()として値を取るために、
def get_context_data(self, **kwargs):にformを引数と渡そうとしても渡せない。
補足情報(FW/ツールのバージョンなど)
●開発環境
- Python: 3.7.5
- Django: 2.2.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/31 10:04
2020/03/31 10:07
2020/03/31 10:14
2020/03/31 10:18
2020/03/31 10:35