분류 전체보기
-
room_card.html and model functionProject using python/Cloning Airbnb 2021. 2. 26. 10:31
templates mixins/room_card.html 나는 room.get_first_photo와 room.get_review_points를 사용했다. 이 method는 rooms/models.py에 정의되어 있다. {% for room in rooms %} picture {% if room.host.superhost %} Superhost {% endif %} {{room.get_review_points}} ({{room.reviews.count}}) {{room.country}} • {{room.address}} {% endfor %} 참고 자료 노마드 코더의 Airbnb 클론 강의 소스 코드 github.com/zpskek/airbnb-clone-v3/commit/509e5df373712be95..
-
django CBV HomeViewProject using python/Cloning Airbnb 2021. 2. 26. 10:22
모든 model들을 완성하였으니 웹 페이지(view)를 만들 차례다. urlsettings.py Diretory path 설정 settings.py에 TEMPLATES list에 있는 DIRS에 다음과 같이 directory 경로를 추가해준다. urlpattenrs config/urls.py config/urls.py에 urlpatterns에 app의 url 경로를 추가해줘야 한다. include의 첫번 째 인자는 .urls다. namespace는 core app에 있는 urls.py에 선언된 app_name이다. core/urls.py $ django-admin startapp core 위 명령어를 쳤을 때 urls.py는 생성되지 않기 때문에 우리가 임의의로 생성해줘야 한다. 4 line에 app_n..
-
Custom Commands and django-seedProject using python/Cloning Airbnb 2021. 2. 25. 08:00
Custom Commands 모든 model의 틀을 잡았다면, 각 model의 test case를 생성해야 한다. 이것을 도와주는 것이 django의 custom command와 django-seed다. Custom Command diretory 구조 directory 구조는 다음과 같다. app/management/commands/을 생성하면 된다. management와 commands folder에는 __init__.py를 생성한다. (__pycache__는 신경쓸 필요 없다. command를 실행하면 자동으로 생성되는 것이다.) __init__.py __init__.py를 생성하는 이유는 해당 디렉토리가 패키지의 일부임을 알려준다. python 3.3 버전 이후로는 __init__.py이 없어도 패..
-
Create Conversation Model and AdminProject using python/Cloning Airbnb 2021. 2. 24. 16:57
settings.py app 추가 PROJECT_APPS에 conversation app을 추가해준다. reservations/models.py Conversation Model 생성 대화를 이루고 있는 user들을 집합을 participants로 나타냈다. Message Model 생성 Conversation model 이외에도 Message model을 생성했다. conversations/admin.py admin 생성 Reservation Admin 참고 자료 노마드 코더의 Airbnb 클론 강의 소스 코드 github.com/zpskek/airbnb-clone-v3/commit/e623d3404dcd7d410ded988bbf357c4cce73fcc9
-
Create List Model and AdminProject using python/Cloning Airbnb 2021. 2. 24. 16:28
settings.py app 추가 PROJECT_APPS에 list app을 추가해준다. lists/models.py List는 guest가 좋아하는 room의 목록이다. 그 중 user는 ForeignKey가 아닌 OneToOneField를 사용하였는데, 그 이유는 다대일 매칭이 아닌 일대일 매칭을 해야 하기 때문이다. Guest가 자신의 list를 다른 이들과 공유하지 않기 때문이다. reservations/admin.py 참고 자료 노마드 코더의 Airbnb 클론 강의 소스 코드 github.com/zpskek/airbnb-clone-v3/commit/31987815300f2d089ffae80d5a50f72ed299b17f
-
django-dotenvProject using python/Cloning Airbnb 2021. 2. 24. 15:34
환경변수를 관리하는 파일은 .env다. 이 파일에 내용은 외부에 노출되어서는 안 된다. 동시에 django app은 이 파일의 내용을 읽어야 한다. 그것을 도와주는 moudle이 django-dotenv다. 나는 settings.py에 있는 SECRET_KEY에 value를 .env로 옮기고 os.environ.get("SECRET_KEY")로 읽었다. Installation $ pipenv install django-dotenv Usage manage.py import dotenv를 해주고 if __name__ == "__main__"에 다음 code를 추가해줬다. settings.py에 있는 SECRET_KEY는 외부에 노출되어서는 안되기 때문에 .env로 옮기고 os.environ.get()으로 ...
-
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 ..