git clone <github 주소>
작업할 디렉토리를 미리 만들어놓지않은 경우에.
붙이는 과정을 생략
requirement.txt
다른 사람들과 협업할 때 동일한 개발환경을 구축하는 것이 중요하다. 즉, 사용자의 컴퓨터마다 사용하는 패키지가 동일해야한다. 개발환경을 'requirement.txt에 기록한다.
.gitignore
파일에 my_settings
추가하는거 까먹지말기. 보안관련 사항에는 더 신경쓴다.from django.db import models
class User(models.Model):
name = models.CharField(max_length=45)
email = models.CharField(max_length=45, unique=True)
password = models.CharField(max_length=100)
class Meta :
db_table = 'users'
class Information(models.Model):
age = models.PositiveIntegerField()
sex = models.CharField(max_length=5)
contact_point = models.CharField(max_length=45, null=True)
user = models.ForeignKey('User')
class Meta:
db_table = 'information'
수정사항
- 코딩 컨벤션에 맞춰서 Align 수정
- 속성 이름은 간결하고 직관적으로 수정
contact_point
->contact
ForeignKey
옵션에models.on_CASCADE
추가- 회원정보 특성상 한 번에 모든 데이터를 불러오는 경우가 많아 테이블을 타고 들어가지 않게 설정하는 것이 경제적임
- 데이터 저장없이 빈 칸으로 비워놓기 위해서는
null=True
보다blank=True
가 적합함.
from django.db import models
class User(models.Model):
name = models.CharField(max_length=45)
email = models.CharField(max_length=100, unique=True)
password = models.CharField(max_length=100)
contact = models.CharField(max_length=100, blank=True, default='')
class = Meta:
db_table = 'users'
Review
- 테이블 병합 및 속성 축소
- 수정사항 모두 반영
- 시작(모델링)을 잘해야 이후 작업이 수월하다 !!
import json
import re
from django.http import JsonResponse
from django.views import View
from users.models import User
class UserView(View):
def post(self,request):
try:
data = json.loads(request.body)
email = data['email']
password = data['password']
email_regx = r'[\w\.-]{3,15}@[\w\.-]{2,}\.\w{2,4}\b'
email_val = re.match(email_regx, email)
if not email_val:
return JsonResponse({'message':'wrong_email'}, status=400)
password_regx = r'^(?=(.*[A-Za-z]))(?=(.*[0-9]))(?=(.*[@#$%^!&+=.\-_*]))([a-zA-Z0-9@#$%^!&+=*.\-_]){8,}$'
password_val = re.match(password_regx, password)
if not password_val:
return JsonResponse({'message':'wrong_password'}, status=400)
if User.objects.filter(email=email).exists():
return JsonResponse({'message':'email_already_exists'}, status=400)
User.objects.create(
name = data['name'],
email = email,
password = password,
contact = data['contact']
)
return JsonResponse({'message':'success'}, status=201)
except KeyError:
return JsonResponse({'message':'key_error'}, status=400)
수정사항
- 변수 정리
👇 수정 전 !
👇 변수 정리 후 !
어려웠던 부분
정규표현식은 사전스터디때부터 많이 연습했었지만 아직도 완벽하게 이해가 안된다 . . ^^ 만들 때마다 다시 표 보면서 더듬더듬 만드느라 힘들었다 후 내가 만들 수 있는 가장 강력한 정규표현식이었다.
코드를 가능한 한 깔끔하게 적으려고 하고있다. 같은 기능을 구현하는 한 최대한 짧게 !!! 나름의 챌린지같은 느낌으로 즐기는 중 ㅎㅎ