初歩的な疑問があります。
Python のDjangoを使っていて(他のものでもだと思うのですが)ページ遷移メソッドな種類があり、これはどのタイミング使用していいのか、疑問に思いました。例にあげれば
- HttpResponseRedirect
- reverse
- redirect
- render
- reverse_lazy
の場面によっての使い分けが分かりません。
一応自分がよく使うものの例が
python
1# HttpResponseRedirectとreverseを使ったもの 2from django.views.generic.edit import CreateView 3from django.http import HttpResponseRedirect 4from django.core.urlresolvers import reverse 5 6class UserDetailCreateView(CreateView): 7 def dispatch(self, request, *args, **kwargs): 8 # ログインしてないとエラー 9 if not request.user.is_authenticated(): 10 messages.error(self.request, '新規登録後の設定になります') 11 # return redirect('auth_login')? 12 return HttpResponseRedirect(reverse('auth_login')) 13 14 15# reverse_lazyを使ったもの 16class UserDetailUpdateView(LoginRequiredMixin, UpdateView): 17 model = UserDetail 18 form_class = UserDetailModelForm 19 success_message = "%(first_name)s さんの情報が追加されました。" 20 success_url = reverse_lazy('events:list') 21 22 23 24# 他にも関数を使ったもので 25# redirectとrender 26def user_info_add(request): 27 form = UserInformationModelForm(request.POST or None) 28 if form.is_valid(): 29 user_info.save() 30 messages.success('userが追加されました。') 31 return redirect('userdates:home') 32 context = { 33 'form': form, 34 } 35 return render(request, 'userdates/user_info_add.html', context) 36
一応自分の認識を例に上げると
・redirectとrenderの違いは、POSTで返って来たデータを安全に破棄して違うviewに遷移させるのがredirectで、ただもらったデータを元にTemplateに渡すだけのものをrenderかなと思っています。
・reverse_lazyは、reverseを文字列として渡す時に使用する
以上です。
これは違う言語やFrameworkでも同じことだと思うのですが、皆様の見解をどうかお聞かせ下さい。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/08 08:33