from django.shortcuts import render, redirect from django.contrib.auth import login as auth_login from django.urls import reverse from django.views import View from .forms import LoginForm class RegisterView(View): def get(self, request, *args, **kwargs): # すでにログインしている場合はショップ画面へリダイレクト if request.user.is_authenticated: return redirect(reverse('shop:index')) context = { 'form': RegisterForm(), } return render(request, 'accounts/register.html', context) def post(self, request, *args, **kwargs): logger.info("You're in post!!!") # リクエストからフォームを作成 form = RegisterForm(request.POST) # バリデーション if not form.is_valid(): # バリデーションNGの場合はアカウント登録画面のテンプレートを再表示 return render(request, 'accounts/register.html', {'form': form}) # 保存する前に一旦取り出す user = form.save(commit=False) # パスワードをハッシュ化してセット user.set_password(form.cleaned_data['password']) # ユーザーオブジェクトを保存 user.save() # ログイン処理(取得した Userオブジェクトをセッションに保存 & Userデータを更新) auth_login(request, user) return redirect(settings.LOGIN_REDIRECT_URL) コード ```現場で使えるdjangoの教科書から質問です。これはログイン画面を写すviewなのですが、クラスビューを書く際、 GETリクエストの時はget()、POSTリクエストの時はpost()を用意する と書いてあったのですが、ログインやそれ以外においても、具体的にdjango.views.Viewを使う際、どのような時にget()とpost()を使い分けなければならないのでしょうか。 まだ僕の知識が浅いのですが、ページにアクセスした際に、どういう時にGETリクエスト、POSTリクエストになる違いもあまりわかりません。 よろしくお願いします。 https://github.com/akiyoko/django-book-mysite-sample これがコードの全部であると思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/04/01 09:19
2019/04/01 09:41
2019/04/01 10:02