Project using python
-
django mark_safe on photo adminProject using python/Cloning Airbnb 2021. 2. 24. 11:21
admin.py mark_safe django는 기본적으로 autoescape가 on으로 활성화되어 있다. autoescape란 .html 파일이 아닌 외부로부터의 코드를 모드 escape화 시키는 것을 말한다. 그래서 태그를 사용해도 이미지가 display 되지 않고 글자가 display 된다. Django가 이러한 설정을 default로 한 이유는 보안 때문이다. 의심하지 않고 어떠한 입력 값이든 받아들이면 XSS 공격에 취약하기 때문이다. 그래서 안전한다고 생각하는 입력 값만 태그로 받아들여야 한다. 이 때 사용하는 것이 mark_safe()다. mark_safe로 감싸진 code는 안전하니 escaped 하지 않아도 된다는 뜻이다. mark_safe()를 적용하지 않았을 때 mark_safe()를..
-
Create Reservation Model and AdminProject using python/Cloning Airbnb 2021. 2. 23. 18:34
settings.py app 추가 PROJECT_APPS에 reservation app을 추가해준다. reservations/models.py BookedDay Model 생성 User가 예약을 하면 여러 날을 하게 될 때가 있다. A room을 2021.2.23 ~ 2021.2.25까지 예약을 한 경우 다른 user가 이 방을 이 날짜에 예약을 하면 안 된다. 그래서 만들어진 model이 BookedDay다. BookedDay는 user가 예약을 할 때마다, 예약된 날짜와 해당 방을 지칭하는 reservation을 가지는 model이다. Reservation Model 생성 이 방이 승인되었는지 여부를 가지는 status와 이 방의 예약자(guest), room과 check in & check out ..
-
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 같..