from django.db import models
# Create your models here.
class Sampleuser(models.Model):
username = models.CharField(max_length=60, verbose_name='사용자명')
useremail = models.EmailField(max_length=128 ,verbose_name='사용자이메일')
password = models.CharField(max_length=64, verbose_name='비밀번호')
registered_dttm = models.DateTimeField(auto_now_add=True,
verbose_name='등록시간')
def __str__(self):
return self.username
class Meta:
db_table = 'sample_sampleuser'
verbose_name = '샘플 사용자'
verbose_name_plural = '샘플 사용자'
기존에 회원필드에 유저이름과 비밀번호만 넣었다면 이메일필드를 추가해서 수정하는 것 까지 공부를 했다.
먼저
models.py 내부에 이메일 필드를 하나 추가해준다.
python manage.py makemigrations 후 디폴트값 1번 입력 후 설정
python manage.py migrate
register.html 수정
<html>
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<link
rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
crossorigin="anonymous"
/>
<script
src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"
></script>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
crossorigin="anonymous"
></script>
<script
src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
crossorigin="anonymous"
></script>
</head>
<body>
<div class="container">
<div class="row mt-5">
<div class="col-12 text-center">
<h1>회원가입</h1>
</div>
</div>
<div class="row mt-5">
<div class="col-12">
{{ error }}
</div>
</div>
<div class="row mt-5">
<div class="col-12">
<form action="." method="POST">
{% csrf_token%}
<div class="form-group">
<label for="username">사용자 이름</label>
<input
type="text"
class="form-control"
id="username"
placeholder="사용자 이름"
name="username"
/>
</div>
<div class="form-group">
<label for="useremail">사용자 이메일</label>
<input
type="email"
class="form-control"
id="useremail"
placeholder="사용자 이메일"
name="useremail"
/>
</div>
<div class="form-group">
<label for="password">비밀번호</label>
<input
type="password"
class="form-control"
id="password"
placeholder="비밀번호"
name="password"
/>
</div>
<div class="form-group">
<label for="re-password">비밀번호 확인</label>
<input
type="password"
class="form-control"
id="password"
placeholder="비밀번호 확인"
name="re-password"
/>
</div>
<button type="submit" class="btn btn-primary">등록</button>
</form>
</div>
</div>
</div>
</body>
</html>
views.py 수정
from django.shortcuts import render
from .models import Sampleuser
from django.http import HttpResponse
from django.contrib.auth.hashers import make_password # make_password함수사용을위해 선언
# Create your views here.
def register(request):
if request.method == 'GET': # 주소를 치고 들어갔을때의 경우
return render(request, 'register.html')
elif request.method == 'POST': # 등록을 눌렀을때의 액션
username = request.POST.get('username', None) # 초기값 None으로 설정
useremail = request.POST.get('useremail', None)
password = request.POST.get('password', None)
re_password = request.POST.get('re-password', None)
res_data = {} # 에러를 받을 딕셔너리 만들어줌
if not(username and useremail and password and re_password): # 값 3개가 다들어있지않는경우
res_data['error'] = '모든 값을 가지지않았습니다'
elif password != re_password:
res_data['error'] = '비밀번호가 다릅니다'
else:
sampleuser = Sampleuser(
username=username,
useremail=useremail,
password=make_password(password) # 암호화 후 저장
)
sampleuser.save()
# 데이터 포스트를 하고 다시 html페이지를반환
return render(request, 'register.html', res_data)
# res_data를 줘야 에러메시지 출력됨
# 리퀘스트와 반환하고싶은 html파일 리턴
'IT > Django' 카테고리의 다른 글
Django 기초 6.로그인 페이지 구성 및 홈페이지 이동 기능 (0) | 2019.10.07 |
---|---|
Django 기초 5. CDN 이용 페이지 테마 변경 (0) | 2019.10.07 |
Django 기초 3.회원가입 페이지 만들기 (1) | 2019.10.06 |
Django 기초 2.데이터베이스 관리 및 장고 어드민 활성화 (0) | 2019.10.01 |
Django 기초 1.설치 및 프로젝트 구성 (0) | 2019.10.01 |