【Docker+Nginx+Django+RDS】WEB 앱이 생길 때까지 ⑤ 유저 등록(사인인) 기능을 만들자

10857 단어 nginx도커장고RDS

전치



독학으로 아이의 성장 앱을 만들었을 때를 기록으로 남겨 갑니다.
틀린 곳 등 있으면 연락 부탁드립니다.
 ① 장고의 환영 페이지에 도착할 때까지
Nginx에서 장고의 환영 페이지에 도착할 때까지
맞춤 사용자를 만들어 admin에 도착
로그인 로그아웃하자
 ⑤ 사용자 등록(로그인) 기능을 만들자  <--여기입니다
사용자별 데이터 등록 가능 ~ CRU편
사용자별 데이터 등록 가능 ~ 삭제편
이미지 파일 업로드
신장 체중을 기록하는 @ 일괄 삭제 기능 포함
성장 곡선 그래프를 그려 보자.
프로덕션 환경에 배포 + 다양한 수정

Goal



로그인 기능을 만들자

양식



장고는 로그인 로그아웃을 쉽게 구현할 수 있다. (이후 간단한 CRUD도)
로그인도 기능은 구현되어 있지만, Template는 없기 때문에 스스로 만든다.
맞춤 사용자를 권장하고 사용자를 관리하기 위해 원하는 정보는
비즈니스 로직에 가까워진다는 것이다.

UserCreationForm을 상속하여 로그인의 기본 기능을 상속합니다.
User는 get_user_model()을 하지 않으면 에러가 된다.
커스텀 유저로 하고 있으므로, 명시하지 않으면 발견되지 않는 것이라고 생각된다.

forms.py
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth.forms import UserCreationForm

User = get_user_model()

class SignUpForm(UserCreationForm):
    class Meta:
        model = User
        fields = ('email',)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field in self.fields.values():
            field.widget.attrs['class'] = 'form-control'

보기



HTML로부터 POST로 받아, 폼을 돌려준다・・・라고 하는 기본형.

users/view.py
from django.contrib.auth import login as dj_login
from .forms import SignUpForm
from django.shortcuts import render, redirect

# サインアップ画面
def signup(request):
    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            user = form.save()
            dj_login(request, user)
            return redirect(to='/')
    else:
        form = SignUpForm()
    return render(request, 'users/signup.html', {'form': form})

HTML



로그인 페이지와 별로 변하지 않는다. Form과 bootstrap에 맡긴다.

users/signup.html
{% extends 'base.html' %}

{% block content %}

<div class="col-md-12 col-lg-5">
    <h2>ユーザー登録</h2>
    <form method="POST" class="post-form">{% csrf_token %}
        {% bootstrap_form form %}
        <button type="submit" class="save btn btn-primary">登録</button>
    </form>
</div>
{% endblock %}

urls



signup 페이지의 페이지를 추가.
signup에는 Login 페이지에서 링크를 붙이고 있다. 자세한 것은 1전의 회를 참조.

users/urls.py
app_name = 'users'

urlpatterns = [
    path('', views.mypage, name='mypage'),
    path('signup/', views.signup, name='signup'), #追加
    path('mypage/', views.mypage, name='mypage'),
    path('login/', views.login_mypage.as_view(), name='login'),
    path('logout/', views.logout.as_view(), name='logout'),
]

확인



Signup 화면. 입력을 위한 밸리데이션 코멘트도 붙어 있다.
(방해하는 경우는 지울 수 있다.)


입력 할 사용자 이름 (이메일 주소)이 중복되면 감지됩니다.


등록이 성립되면, 마이 페이지로 날아간다.

좋은 웹페이지 즐겨찾기