Django
Django 기초 05. 이메일 필드 추가
륵기
2019. 11. 20. 23:33
728x90
반응형
이전 시간까지 아이디, 패스워드, 패스워드 확인에 대해서 알아보았다.
이전에 배운 것을 활용해서 이메일 필드를 추가해보자.
먼저 user의 models.py의 코드에 추가로 작성해보자.
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=32, 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 = 'user'
verbose_name = '사용자'
verbose_name_plural = '사용자'
이전 코드와 달라진 점이 무엇인가?
useremail이 추가되었다. 필드를 추가했으니, register.html과 views.py를 수정해야한다.
#views.py
from django.shortcuts import render
from .models import User
from django.http import HttpResponse
from django.contrib.auth.hashers import 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)
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 useremial and password and re_password)::
res_data['error'] = '모든 값을 입력해야 합니다!'
elif password != re_password:
res_data['error'] = '비밀번호가 다릅니다!'
else:
user = User(
username=username,
useremail=useremail, #새로 추가
password = make_password(password)
)
user.save()
return render(request, 'register.html',res_data)
<div class="form-group"><!--form의 경우 데이터를 서버에 전달-->
<label for="useremail">사용자 이메일</label>
<input type="email" class="form-control" id="useremail" placeholder="사용자 이메일" name="useremail">
</div>
그리고 필드를 업데이트하기 위해서는 앞선 게시글에서 봤던
python manage.py makemigrations
python manage.py migrate
이 두 명령어를 터미널에 입력함에 따라 업데이트 시켜줘야한다.
makemigrations를 하면
Select an option이 뜰텐데 1을 입력해서 양식을 'test@gmail.com' 으로 입력하고 migrate 하자.
runserver를 하고 접속하면 위와 같이 변경된 것을 확인할 수가 있다.
다음 시간에는 기능확장을 추가적으로 해보자.
728x90
반응형