【Docker+Nginx+Django+RDS】WEB 앱이 생길 때까지 ⑤ 유저 등록(사인인) 기능을 만들자
전치
독학으로 아이의 성장 앱을 만들었을 때를 기록으로 남겨 갑니다.
틀린 곳 등 있으면 연락 부탁드립니다.
① 장고의 환영 페이지에 도착할 때까지
② Nginx에서 장고의 환영 페이지에 도착할 때까지
③ 맞춤 사용자를 만들어 admin에 도착
④ 로그인 로그아웃하자
⑤ 사용자 등록(로그인) 기능을 만들자 <--여기입니다
⑥ 사용자별 데이터 등록 가능 ~ CRU편
⑦ 사용자별 데이터 등록 가능 ~ 삭제편
⑧ 이미지 파일 업로드
⑨ 신장 체중을 기록하는 @ 일괄 삭제 기능 포함
⑩ 성장 곡선 그래프를 그려 보자.
⑪ 프로덕션 환경에 배포 + 다양한 수정
Goal
로그인 기능을 만들자
양식
장고는 로그인 로그아웃을 쉽게 구현할 수 있다. (이후 간단한 CRUD도)
로그인도 기능은 구현되어 있지만, Template는 없기 때문에 스스로 만든다.
맞춤 사용자를 권장하고 사용자를 관리하기 위해 원하는 정보는
비즈니스 로직에 가까워진다는 것이다.
UserCreationForm을 상속하여 로그인의 기본 기능을 상속합니다.
User는 get_user_model()을 하지 않으면 에러가 된다.
커스텀 유저로 하고 있으므로, 명시하지 않으면 발견되지 않는 것이라고 생각된다.
forms.pyfrom 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.pyfrom 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.pyapp_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 화면. 입력을 위한 밸리데이션 코멘트도 붙어 있다.
(방해하는 경우는 지울 수 있다.)
입력 할 사용자 이름 (이메일 주소)이 중복되면 감지됩니다.
등록이 성립되면, 마이 페이지로 날아간다.
Reference
이 문제에 관하여(【Docker+Nginx+Django+RDS】WEB 앱이 생길 때까지 ⑤ 유저 등록(사인인) 기능을 만들자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/quantity82/items/bbfc7e72d4a65c71e24c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
로그인 기능을 만들자
양식
장고는 로그인 로그아웃을 쉽게 구현할 수 있다. (이후 간단한 CRUD도)
로그인도 기능은 구현되어 있지만, Template는 없기 때문에 스스로 만든다.
맞춤 사용자를 권장하고 사용자를 관리하기 위해 원하는 정보는
비즈니스 로직에 가까워진다는 것이다.
UserCreationForm을 상속하여 로그인의 기본 기능을 상속합니다.
User는 get_user_model()을 하지 않으면 에러가 된다.
커스텀 유저로 하고 있으므로, 명시하지 않으면 발견되지 않는 것이라고 생각된다.
forms.pyfrom 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.pyfrom 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.pyapp_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 화면. 입력을 위한 밸리데이션 코멘트도 붙어 있다.
(방해하는 경우는 지울 수 있다.)
입력 할 사용자 이름 (이메일 주소)이 중복되면 감지됩니다.
등록이 성립되면, 마이 페이지로 날아간다.
Reference
이 문제에 관하여(【Docker+Nginx+Django+RDS】WEB 앱이 생길 때까지 ⑤ 유저 등록(사인인) 기능을 만들자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/quantity82/items/bbfc7e72d4a65c71e24c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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.pyapp_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 화면. 입력을 위한 밸리데이션 코멘트도 붙어 있다.
(방해하는 경우는 지울 수 있다.)
입력 할 사용자 이름 (이메일 주소)이 중복되면 감지됩니다.
등록이 성립되면, 마이 페이지로 날아간다.
Reference
이 문제에 관하여(【Docker+Nginx+Django+RDS】WEB 앱이 생길 때까지 ⑤ 유저 등록(사인인) 기능을 만들자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/quantity82/items/bbfc7e72d4a65c71e24c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{% 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 %}
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 화면. 입력을 위한 밸리데이션 코멘트도 붙어 있다.
(방해하는 경우는 지울 수 있다.)
입력 할 사용자 이름 (이메일 주소)이 중복되면 감지됩니다.
등록이 성립되면, 마이 페이지로 날아간다.
Reference
이 문제에 관하여(【Docker+Nginx+Django+RDS】WEB 앱이 생길 때까지 ⑤ 유저 등록(사인인) 기능을 만들자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/quantity82/items/bbfc7e72d4a65c71e24c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Docker+Nginx+Django+RDS】WEB 앱이 생길 때까지 ⑤ 유저 등록(사인인) 기능을 만들자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/quantity82/items/bbfc7e72d4a65c71e24c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)