rueki

Django 기초 05. 이메일 필드 추가 본문

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
반응형
Comments