에어비앤비 클론 코딩 8

노마드 코더 에어비앤비 클론 코딩 #15 AUTHENTICATION

Authentication django는 우리가 바로 사용할 수 있는 인증시스템이 기본으로 있다. 로그인하면 django는 백엔드에서 세션을 생성하고 자동으로 쿠키도 준다. 매번 django 웹사이트를 방문할 때마다, 쿠키는 django로 가고, django는 쿠키를 읽어서 request.user에 user와 쿠키 정보를 함께 넣는다. 이런 기본 인증 시스템이 아닌 직접 커스텀 인증을 만들 수 있다. 이런 방법에는 토큰 인증, JWT인증 등이 있다. Custom Authentication #config/authentication.py from rest_framework.authentication import BaseAuthentication from rest_framework.exceptions impo..

노마드 코더 에어비앤비 클론 코딩 #10 Django Rest Framework

@api_view() 유저에게 HttpResponse를 전달하면 안되고, JSON을 전달해야한다. Json에서는 'return JSONResponse({"categories":all_categories})'처럼 변수를 보내면 오류가 난다. 그래서 QuerySet을 JSON포맷으로 변환해야한다. Django Rest Framework를 사용하여 변환할 수 있다. #예 from rest_framework.response import Response from .models import Category @api_view() def categories(request): return Response(...) Serializer: python말로 Django말을 JSON으로 바꿔주고, 반대로 JSON을 Django말..

노마드 코더 에어비앤비 클론 코딩 #9 Urls and Views

Views config 폴더의 'urls.py' : 유저가 특정 url로 접근했을 때, 장고가 해야할 행동에 대해 적혀있다. 각 App 폴더마다 있는 'views.py'는 직접 import해야 사용할 수 있다. 그래서 꼭 이름이 views.py일 필요는 없다. 이를 직접 import하는 방법은 두가지다. ①urls.py에 적어주기 views.py에 함수 작성 # views.py from django.http import HttpResponse def say_hello(request): return HttpResponse('Hello!') -> urls.py에 path 적어주기 # urls.py from room.views import say_hello urlpatterns = [path("rooms",s..

노마드 코더 에어비앤비 클론 코딩 #8 Power Admin

Methods admins.py와 models.py 모두에 function을 정의할 수 있다. 만약 오직 관리자 페이지에서만 function을 사용할 것이라면, admins.py에 정의한다. 만약 관리자 페이지 뿐만 아니라 다른 곳에서도 사용할 것이라면, models.py에 정의한다. Method 만들기 클래스 안에 있는 메서드는 항상 self를 첫번째 매개 변수로 받아야한다. 꼭 self라 할 필요는 없고, 단지 꼭 하나의 초기 매개 변수가 있으면 된다. ⭐'방 리뷰의 평균 보여주기' 메서드 우리의 Room 모델의 review 속성을 가지고 있지 않다. 하지만, review 모델이 room을 가리키므로 Room에서 그 방을 가리키는 모든 review들에 접근할 수 있다. def rating(room):..

노마드 코더 에어비앤비 클론 코딩 #7 ORM

ORM(객체 관계 맵핑): Django를 데이터베이스에 연결. 파이썬을 사용하듯이, 관리자 패널을 통하지 않고 데이터베이스와 '직접' 소통하는 법 Method > Django의 shell 시작: 'python manage.py shell' (Django가 구성된 console이 켜짐) > 우리가 만들었던 Room 모델을 불러옴: 'from rooms.models import Room' > 메서드: Django는 우리가 모델을 만들 때 'objects'라는 속성을 자동으로 부여해줌. objects에는 많은 메서드가 있음. 이를 이용하면 데이터베이스가 Room 모델에서 나온 데이터들을 꺼내오도록 시킬 수 있다. ex) 모든 Room에 접근하고 싶을 때 Room을 import하고 'Room.objects' '..

노마드 코더 에어비앤비 클론코딩 #6 Models and Admin

Models 'models.ImageField'를 사용하려면 터미널에 'poetry add pillow'를 해주어야 한다. #선택지 만들기 class GenderChoices(models.TextChoices): MALE = ("male","Male") #(데이터 베이스에 들어갈 값, 관리자 페이지에서 보게될 label) FEMALE = ("female","Female") gender = models.CharField(max_length=10,choices=GendrChoices.choices) #max_length는 선택지보다 길게,choices=클래스명.choices ManytoManyField: N:M, M:N -> 여러 개의 Amenity들이 여러 Room에 들어갈 수 있는 것처럼 다대다의 관계 ..

노마드 코더 에어비앤비 클론코딩 #4 App 만들기

App 만들기 : 'python manage.py startapp app이름' -> App이름 폴더가 생성됨. models.py: App에서 데이터의 모양을 설명하는 파일. 파이썬 코드와 클래스로 설명해야함. class House(models.Model): #Model을 상속받아야함. name = models.CharField(max_length=140) #추가할 각각의 요소의 데이터 타입을 적어주어야함. price = models.PositiveIntegerField() max_length와 같이 attribute나 다른 정보들은 https://docs.djangoproject.com/en/4.1/ django 공식 문서를 보면 알 수 있다. ⭐ App를 만들면 config/settings.py에 있는..

노마드 코더 에어비앤비 클론코딩 #3

요즘은 환기를 위해 노마드 코더 강의를 듣고 있습니다.. 'django-admin startproject'를 했을 때 'manage.py' 파일이 생긴다. manage.py 파일이 터미널에서 django 명령을 실행한다. 개발 단계에서 vscode로 작업할 때는, manage.py를 사용해 실행한다. python manage.py runserver : django server를 실행하고, 터미널에서 그 링크를 볼 수 있다. 그 링크에서 나타나는 no such table : django session 오류: 데이터베이스 'db.sqlite3'에서 django_session을 찾는데 실패한 것. 이유??: django는 여러 기능을 가짐.(세션, 패스워드 등 모든 유저 데이터를 DB에 저장) 빨간 글씨로 m..

728x90