Python/Django
[Django] Westagram 회원가입 기능 작성해보기 ver.2
이번에는 저번에 블로깅한 View의 다른버전입니다. 기본적인 흐름은 아래와같습니다. 유효성검사를 modules로 구현 직접 모듈 내에서 return이 아닌 raise로 예외발생 except란에 각 예외별로 리턴값을 작성 예외를 종류별로 나누기위한 Exceptions.py 생성 폴더 구조는 아래와 같습니다. 모듈 설명 exceptions.py 우선 코드먼저 보여주는게 좋을 것 같습니다. class EmailDuplicateError(Exception): pass class EmailRegexError(Exception): pass class PasswordRegexError(Exception): pass class PasswordLengthError(Exception): pass class PhoneNum..
[Django] Westagram 회원가입 기능 작성해보기 ver.1
Models.py 셋팅 Views.py 내용 class UserView(View): def post(self, request): try: data = json.loads(request.body) username = data['username'] first_name = data['first_name'] last_name = data['last_name'] email = data['email'] password = data['password'] phone_number = data['phone_number'] EMAIL_REGEX = '^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$' PHONE_NUMBER_REGEX = '\d{3}-\d{3,4}-\d{4}' PASSW..
[Django] QuerySet 기본적인 속성과 Field lookups
Object 타입 단일 객체 타입으로 DB의 하나의 Row라고 생각하면된다. QuerySet이란 뭘까!? 여러개의 QueryObject로 이루어져있으며 아래와같은 형태를 보여준다. QuerySet의 속성 QuerySet은 보이는것과 같이 리스트와 굉장히 흡사한 특성을 지니고 있다. 1. iteration : QuerySet은 반복가능한 객체이다. 2.indexing * slicing : 리스트와 똑같이 인덱싱슬라이싱이 가능하며 3.pickling/caching 4.repr() 5.len() : len을 하면 안에 있는 objects의 갯수가 나오지만 count()메소드를 사용하는것이 더 편하다. 6.list() : 쿼리셋을 리스트화 시킬수있다 반환결과는 아래와 같다. list() #결과 [, , ] 7...
[Django]ManyToMany Field 는 왜 사용할까
우선 MTM 과 ForeignKey Field의 셋팅을 보여드리겠습니다. 1.ForeignKey Field 2.ManyToMany Field 장점1. models.py의 코드가 줄어든다. MTM Field의 강제되는 필수 속성은 다대다 필드관계를 맺을 대상 클래스뿐입니다.(위의 경우에는 테이블이름을 직접지정) 그렇기때문에 다대다 필드를 직접 Class로 구현해서 모델을 생성하지 않아도 데이터베이스상에서는 아무런 문제가 없습니다. (주석처리된 부분은 중간필드를 직접 관리하고 싶을때 사용하는 코드) 장점2. 직접적인 연결의 역참조 우선 1번셋팅(ForeignKey)의 Foo_set을 보겠습니다. (Foo_set이란 본인을 참조하는 인스턴스에 접근할수있는 역참조 속성 Foo는 해당 모델의 이름을 따온다) dr..
[django.models] ManyToMany 속성
장고의 MTM 기본셋팅 models.ManyToManyField('상대클래스') 위의 코드로 테이블 생성시 DB에 나타나는 중간테이블의 속성 1.상대모델이 자신이 아닐경우 id : 중간테이블의 고유한 id _id : 필드를 선언한 모델이름_id 로설정 : 상대 클래스의 모델이름_id 로설정 2.상대모델이 자신일 경우 ('self') id : 중간테이블의 고유한 id from__id : 모델을 가리키는 인스턴스의 ID(원본 인스턴스ID) to__id : 관계가 가리키는 인스턴스의 ID(대상 모델 인스턴스) ForeignKey와 동일한 속성 ForeignKey.related_name. ForeignKey.related_query_name. ForeignKey.limit_choices_to. symmetric..
[Django.models]외래키필드의 기본속성
ForeignKey 외래키이기때문에 속성들이 들어갑니다. 이속성들은 OneToOne Field와 ManyToMany Field에도 역시 똑같이 적용됩니다. ForeignKey의 2개의 강제 속성과 특징 1.to : 어느 필드를 참조 할 것인지에대해 그 필드의 클래스명을 str타입으로 1번째 인자로 넣어줘야합니다. 2.on-delete : 참조무결성제약조건을 의미합니다. 이전블로그에 잘 정리되어있습니다. ForeignKey의 참조필드를 활용하는 기초적인 방법. 아래는 models.py의 코드입니다. class Menu(models.Model): name = models.CharField(max_length=45) class Meta: db_table = 'menus' class Category(models..