↓↓クリックして頂けると励みになります。
【08 | サインイン】 << 【ホーム】 >> 【10 | Facebook認証】
「crowdsource/urls.py」ファイルにパスを追加します。
記述追加 【Desktop/crowdsource/crowdsource/urls.py】12行目
from django.contrib import admin from django.urls import path from django.contrib.auth import views as auth_views from core import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.home), path('sign-in/', auth_views.LoginView.as_view(template_name="sign_in.html")), path('sign-out/', auth_views.LogoutView.as_view(next_page="/")), path('sign-up/', views.sign_up), path('customer/', views.customer_page), path('courier/', views.courier_page), ]
「core/views.py」ファイルに記述を追加します。
記述追加【Desktop/crowdsource/core/views.py】16行目
from django.shortcuts import render, redirect from django.contrib.auth import login from django.contrib.auth.decorators import login_required from . import forms # Create your views here. def home(request): return render(request, 'home.html') @login_required() def customer_page(request): return render(request, 'home.html') @login_required() def courier_page(request): return render(request, 'home.html') def sign_up(request): form = forms.SignUpForm() if request.method == 'POST': form = forms.SignUpForm(request.POST) if form.is_valid(): email = form.cleaned_data.get('email').lower() user = form.save(commit=False) user.username = email user.save() login(request, user) return redirect('/') return render(request, 'sign_up.html', { 'form': form })
「core/templates」フォルダに「sign_up.html」ファイルを新規作成します。
作成した「sign_up.html」ファイルを以下のように編集します。
新規作成 【Desktop/crowdsource/core/templates/sign_up.html】
{% extends 'base.html' %}
{% load bootstrap4 %}
{% block content %}
<div class="container-fluid mt-5">
<div class="row justify-content-center">
<div class="col-lg-4">
<div class="card">
<div class="card-header bg-primary text-light">
<div class="text-center pt-2">
<h4>
{% if request.GET.next != '/courier/' %}
依頼人 | 新規ユーザ登録
{% else %}
配達人 | 新規ユーザ登録
{% endif %}
</h4>
</div>
</div>
<div class="card-body">
<form method="POST">
{% csrf_token %}
{% bootstrap_form form %}
<button type="submit" class="btn btn-primary btn-block">
新規ユーザ登録
</button>
<p class="text-center mt-3">
登録がお済みの方<a href="/sign-in/?next={{ request.GET.next }}"><span class="btn btn-outline-success btn-sm ml-2">ログイン</span></a>
</p>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
「templates/sign_in.html」ファイルを編集します。
記述編集 【Desktop/crowdsource/core/templates/sign_in.html】
{% extends 'base.html' %}
{% load bootstrap4 %}
{% block content %}
<div class="container-fluid mt-5">
<div class="row justify-content-center">
<div class="col-lg-4">
<div class="card">
<div class="card-header bg-info text-light">
<div class="text-center pt-2">
<h4>
{% if request.GET.next != '/courier/' %}
依頼人
{% else %}
配達人
{% endif %}
</h4>
</div>
</div>
<div class="card-body">
<form method="POST">
{% csrf_token %}
{% bootstrap_form_errors form %}
{% bootstrap_label "メールアドレス" %}
{% bootstrap_field form.username show_label=False placeholder="メールアドレス" %}
{% bootstrap_label "パスワード" %}
{% bootstrap_field form.password show_label=False placeholder="パスワード" %}
<button class="btn btn-info btn-block">
サインイン
</button>
<p class="text-center mt-3">
登録がお済みでない方<a href="/sign-up/?next={{ request.GET.next }}"><span class="btn btn-outline-success btn-sm ml-2">新規登録</span></a>
</p>
</form>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
「crowdsource/core」フォルダに「forms.py」ファイルを新規作成します。
作成した「forms.py」ファイルを以下のように編集します。
新規作成 【Desktop/crowdsource/core/forms.py】
from django.db import models from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.models import User from django.core.exceptions import ValidationError class SignUpForm(UserCreationForm): email = models.EmailField(max_length=250) first_name = models.CharField(max_length=150) last_name = models.CharField(max_length=150) class Meta: model = User fields = ('email', 'last_name', 'first_name', 'password1', 'password2') def clean_email(self): email = self.cleaned_data['email'].lower() if User.objects.filter(email=email): raise ValidationError("このメールアドレスはすでに登録されています。") return email
ユーザ登録できることを確認してください。
メールアドレスが重複している場合、バリデーションエラーが返ってきます。
管理画面でユーザが登録を確認してください。
http://127.0.0.1:8000/sign-up/

↓↓クリックして頂けると励みになります。
【08 | サインイン】 << 【ホーム】 >> 【10 | Facebook認証】