Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 우분투비트확인
- 놀이동산의슈퍼컴퓨터를작동시켜라
- Xangle
- 2019회고
- 프로그래머스
- 개발자를위한파이썬
- 심플소프트웨어
- 한빛미디어
- 쇠막대기
- machinelearning
- 서구동구예비군훈련장
- tacotron
- 인하대학교
- CrossAngle
- 타코트론
- 인천남중
- 봉사활동
- 로그남기기
- 나는리뷰어다
- 프로그라피
- jaypark.dating
- texttospeech
- graphicdriver
- 결과를얻는법
- 노트북덮개
- intell
- 인하멘토링
- 서버로그
- 신영준
- 개발자회고
Archives
- Today
- Total
jc.jang
5강 회원가입 본문
주제
- 회원가입
노트
- django.contrib.auth.forms에 UserCreationForm을 이용해 회원가입을 구현한다.
- urls.py에 회원가입 url을 등록한다.
- UserCreationForm을 임포트하여 입력 받은 데이터로 회원 가입을한다.
- accounts/templates/accounts/signup.html을 구현한다.
- 위의 과정이 가장 기본적인 방법이다.
- 만약 회원가입 시 email을 추가로 입력받고 싶다면
- UserCreationForm을 forms.py에서 상속 받아 재정의해서 사용하면 편하다.
- accounts/urls.py
from django.urls import path
from django.contrib.auth import views as auth_views
from . import views
urlpatterns = [
...
path('signup/', views.signup, name='signup'),
...
]
- accounts/forms.py
from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
class SingupForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'password1', 'password2', 'email')
- UserCreationForm을 상속받아 email 필드를 추가한다.
- accounts/views.py
from django.shortcuts import render, redirect
from django.conf import settings
from .forms import SingupForm
def signup(request):
if request.method == "POST":
form = SingupForm(request.POST)
if form.is_valid():
user = form.save()
return redirect(settings.LOGIN_URL)
else:
form = SingupForm()
return render(request, 'accounts/signup.html', {
'form': form,
})
- request.method가 GET인 경우 form을 render한다.
- request.method가 POST인 경우 form.is_valid()를 통해 데이터를 확인하고 모델(회원)을 저장한다.
- 회원 가입 후 settings.LOGIN_URL로 redirect한다.
- accounts/templates/accounts/signup.html
{% extends "accounts/layout.html" %}
{% block content %}
<form action="" method="post">
{% csrf_token %}
<table>
{{ form.as_table }}
</table>
<input type="submit">
</form>
{% endblock %}
질문
- User Model에 필드를 추가하려면 어떻게 해야할까?
- 이메일로 로그인하려면 어떻게 해야할까?
요약
- 회원가입 시 email 필드를 받는 것을 찾아 보다가 Form 클래스와 ModelForm 클래스에 대해 자세히 알게 되었다.
- Form은 save method를 직접 구현해줘야 한다는 점에서 번거롭다.
- 하지만 Model과 연동된 ModelForm을 사용하면 간단하게 구현 가능하다.
날짜
- 오후 5시, 20190828
'Django > Django - 인증편' 카테고리의 다른 글
8강 회원가입 시 next 인자 처리하기 (0) | 2019.09.02 |
---|---|
7강 회원가입과 동시에 로그인하기 (0) | 2019.09.02 |
6강 가입과 동시에 Profile만들기 (1) | 2019.08.29 |
4강 로그아웃 구현하기 (0) | 2019.08.28 |
3강 장고 유저 프로필 꾸미기 (0) | 2019.08.28 |
Comments