분류 전체보기
-
Create Review Model and AdminProject using python/Cloning Airbnb 2021. 2. 21. 13:29
settings.py app 추가 PROJECT_APPS에 review app을 추가해준다. reviews/models.py Model 생성 review의 fields이다. review는 자신의 후기를 남길 글이고, accuracy부터 value는 고객 평점이다. 그리고 그에 대한 평균이 avg다. save django의 models.Model에는 save method가 있다. object가 생성될 때마다 실행된다. save method를 customizing 하기 위해서 새로 save를 만들어 override를 하고 마지막에 super().save(*args, **kwargs)를 해줌으로써 기존의 save()를 실행시킨다. reviews/admin.py admin 생성 참고 자료 노마드 코더의 Airb..
-
Django TabularInline and StackedInlineProject using python/Cloning Airbnb 2021. 2. 21. 10:34
TabularInline TabularInline은 django.contrib.admin이 제공하는 같은 admin page에서 다른 model을 edit할 수 있는 ability를 부여한다. 예를 들어, photos/models.py에 Photo model이 있다고 하자. 그리고 rooms/admin.py에서 import한다. 그리고 admin.TabularInline을 상속하는 class를 하나 생성하고 model에 Photo model을 초기화한다. RoomAdmin에 inlines에 위에서 만든 PhotoInline class를 list로 주면 된다. url 주소를 보면 room-change page다. 여기에 Photo model을 edit할 수 있는 form이 생겨났다. StackedInlin..
-
Upload mediaProject using python/Cloning Airbnb 2021. 2. 20. 16:40
Upload media MEDIA_ROOT and MEDIA_URL config/settings.py에 MEDIA_ROOT와 MEDIA_URL을 추가해야 한다. MEDIA_ROOT는 user가 upload한 파일들이 저장되는 파일시스템 절대경로다. 그리고 MEDIA_URL은 MEDIA_ROOT에 의해서 제공된 media file들을 다루는 url이다. 그리고 url은 반드시 /로 끝나야 한다. "/media"라고 하면 안 되고 "/media/"라고 해야 한다. urlpatterns and static MEDIA_URL을 settings.py에 설정했다고 해서 app은 user-uploaded file에 접근할 수 없다. urls.py에 urlpattern에 경로를 추가해줘야 한다. 경로는 static(s..
-
Create Room Model and Admin and Core ModelProject using python/Cloning Airbnb 2021. 2. 20. 15:25
core/models.py DateTimeField와 Meta class users.User를 제외한 나머지 apps은 core/models.py에 있는 TimeStampedModel() class를 상속할 것이다. TimeStampedModel()은 object가 생성될 때마다 언제 생성되었고 언제 업데이트가 되었는지를 저장한다. DateTimeField는 python datetime.datetime의 인스턴스를 표시하는 함수다 (반면에 DateField는 python의 datetime.date를 표시하는 함수다.). DateTimeField의 auto_now_add는 object가 생성되었을 때의 시간 값을 저장하고, auto_now는 object가 업데이트 된 시간을 저장하는 옵션이다. models..
-
Django commandsProject using python/Cloning Airbnb 2021. 2. 20. 09:51
$ django-admin stratproject Django 프로젝트를 생성한다. $ django-admin startapp Django 프로젝트 내에 app을 생성한다. $ python manage.py makemigrations Django가 나의 models.py를 점검하고 migration file을 생성한다. $ python manage.py migrate 생성된 migration file을 적용한다. $ python manage.py runserver django server를 실행한다. 번호를 주지 않으면 default로 127.0.0.1:8000로 server가 열린다. $ python manage.py createsuperuser django의 admin page를 관리할 수 있는 su..
-
Create User Model and Admin PanelProject using python/Cloning Airbnb 2021. 2. 19. 22:41
users/models.py AbstractUser와 django.db.models User는 AbstractUser를 상속한다. AbstractUser는 Django에서 기본적으로 제공하는 User model을 제공한다. User는 AbstractUser를 상속하고 추가적으로 9~15line에 있는 field를 추가함으로써 model을 customizing을 할 수 있다. models에는 여러가지 Field가 있다. 여기서 사용된 것은 ImageField, TextField, CharField, DateField, BoolenaField다. 각각에 맞게 blank와 null 값을 True로 해줘야 python manage.py makemigrations 명령어가 작동한다. 그리고 ImageField 같..
-
Django User settingProject using python/Cloning Airbnb 2021. 2. 19. 16:08
settings.py INSTALLED_APPS settings.py를 보면 INSTALLED_APPS가 있는 것을 확인할 수 있다. django는 framework다. framework라는 것은 우리가 따라야할 규칙들이 있다. 그러므로, 절대로 INSTALLED_APPS의 이름을 변경하면 안 된다. 만약 이름을 바꾼다면 django는 다음 배열에 있는 module을 찾지를 못 하여 우리는 django.contrib의 것들을 사용할 수가 없게 된다. 우리가 django-admin startapp 으로 만들어준 app들도 INSTALLED_APPS에 추가해줘야 한다. 그렇지 않으면 django는 app이 설치되지 않았다고 error를 일으킨다. 그리고 앞으로 우리는 pipenv install을 통하여 py..
-
Create Django AppsProject using python/Cloning Airbnb 2021. 2. 19. 15:25
Django App을 나누는 기준 Airbnb에서 필요한 주요 기능들을 나열해 보면, users, rooms, photos, lists, reviews, conversations, reservations 등이 있다. room detail을 보면 review, list, photo, reservation이 다 들어있어서 모두 room에 포함될 것 같지만, 그렇지 않다. 물론 이 모든 것들을 room app에 넣을 수 있다. 하지만 그렇게 되면 module이 너무 비대해져서 코드를 유지 관리하기가 어렵다. Coding의 제 1원칙은 divide and conquer다. app을 나누는 기준은 CRUD로 생각하면 된다. 예를 들어, 방을 생성하고 읽고 업데이트하고 삭제한다. '그리고' 사진을 생성하고 읽고 업..