会員登録の実装 - code for Django

会員登録の実装

ここから、会員登録の実装方法についてみていきましょう。

やることとしては、会員登録するための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があらかじめ備えているフォームを使うことによって、簡単に実装できたことがわかるかと思います。

次からは、ユーザー登録フォームをカスタマイズしていきます。

~Django無料講義~のご案内

Code for Djangoが、4時間超の無料Django講義をはじめました

  •  ・本を出版したCode for Djangoの
     製作者が作ったサイトです。
  •  ・Code for Djangoの内容も、
     動画で詳しく解説しています。
  •  ・動画は順次ふやしていきますので、
     ただで学び続けることが可能です。
  •  ・Djangoの効率的なスキルアップに、
     是非お役立て下さい。
Created with