htmlファイルの作成
[コマンドライン]
BASE/templates
$ touch signup.html
[コード]-BASE/templates/signup.html
<form method = "post">
{% csrf_token %}
{{ form.as_p }}
</form>
htmlファイルの作成が完了しました。あとは、views.pyファイルでこのsignup.htmlファイルに表示する内容をコントロールし、viewとurlを関連付ければ設定が完了します。
まずは、views.pyの設定をしていきましょう。
[コード]-BASE/login/views.py
from django.views.generic import CreateView
from .forms import CustomUserCreationForm
from django.urls import reverse_lazy
class LoginView(CreateView):
template_name = 'new.html'
form_class = CustomUserCreationForm
success_url = reverse_lazy('complete')
ここでやっていることは今まで学んだ内容と同じです。
ここで、success_urlのところで、'complete'を呼び出すように設定しました。
signupが完了したら表示させる内容をコントロールするためです。
今回は、function based viewを使ってコントロールしていきます。
[コード]-BASE/login/views.py
from dango.http import HttpResponse
def signupcomplete(request):
return HttpResponse("<p>sign upが完了しました。</p>")
これはhello worldアプリの所で実装した内容ですので、詳しい説明は省略します。
簡単に説明すると、signupメソッドが呼び出されると、signupが完了しましたという内容のresponseがブラウザに返されるように設定しています。
最後に、urls.pyファイルを編集していきましょう。
[コード]
-BASE/login/urls.py
from django.urls import path
from .views import LoginView, signupcomplete
urlpatterns = [
path('signup/', SignupView.as_view(), name='signup'),
path('complete/', signupcomplete, name='complete'),
]
これで、superuserを作ったうえでサーバーを立ち上げていきましょう。
[コマンドライン]
BASE
$ python manage.py createsuperuser
$ python manage.py runserver
サーバーを立ち上げた上で、localhost:8000/login/signupをブラウザに打ちます。
すると、このような画面がでました。
forms.pyファイルで設定したusernameとageのフィールドが表示されていることがわかります。
(passwordとpassword confirmationは必ず表示されます。)
ここに実際に情報を書き込み、signupボタンを押してみます。
すると、urlはlocalhost:8000/login/completeと変わり、「sign upが完了しました。」
という画面が表示されていることがわかります。
また、localhost:8000/adminで管理画面にログインすると、signupページで追加したユーザーの情報がしっかりと追加されていることも確認できます。
次は、ユーザー管理画面でカスタムユーザーモデルを使う場合についてみていきましょう。