ここから、会員登録の実装方法についてみていきましょう。
やることとしては、会員登録するためのViewを作り、そこで会員登録を行うことができるようにします。
会員登録画面は、signupアプリを作り、その中で作りこみを行っていくことにします。
コマンドライン-BASE
$ python manage.py startapp signup
次に、settings.pyファイルにアプリを作っていきましょう。
コード-BASE/loginproject/settings.py
INSTALLED_APP = [
...
'signup'
]
次に、urls.pyファイルを編集していきます。
コード-BASE/loginproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('signup/',include('signup.urls')), ← new!
]
次に、signupアプリでurls.pyファイルを作ります。
コマンドライン-BASE/signup
$ touch urls.py
urls.pyファイルを編集し、viewと関連づけていきます。
コード-BASE/signup/urls.py
from django.urls import path
from .views import SignUpView ← new!
urlpatterns = [
path('new/', SignUpView.as_view(), name='signup')
]
これで、localhost:8000/signup/newにアクセスすることでSignUpViewを呼び出すような設定ができました。
次に、SignUpViewを作っていきましょう。
コード-BASE/signup/views.py
from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy
from django.views.generic import CreateView
class SignUpView(CreateView):
form_class = UserCreationForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
UserCreationFormはdjangoにあらかじめ備えられているユーザー登録用のフォームです。
具体的には、username、password、password(確認用)の3つのフィールドから作られているフォームです。
success_urlsは会員登録完了時に遷移するurlを書きます。
なお、ここではreverseではなく、reverse_lazyが使われていますが、この理由は、classの中で(Viewの中で)reverseを使うときは、reverse_lazyを使わなければエラーが出てしまうからです。
ここから、signup.htmlファイルを作っていきましょう。
コマンドラインBASE/templates
$ touch signup.html
実際にsignup.htmlファイルにコードを書いていきましょう。
コード<from method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">登録</button>
これで会員登録するための形が整いました。
サーバーを立ち上げて、localhost:8000/signup/newと打ってみましょう。
djangoがあらかじめ備えているフォームを使うことによって、簡単に実装できたことがわかるかと思います。
次からは、ユーザー登録フォームをカスタマイズしていきます。