GitHub

https://github.com/Choidongjun0830

python 29

노마드 코더 에어비앤비 클론 코딩 #12 USERS API

User Profile # users/serializers.py class PrivateUserSerializer(ModelSerializer): class Meta: model=User exclude = ( "password", "is_superuser", "id", "is_staff", "is_active", "first_name", "last_name", "groups", "user_permissions", ) #users/ views.py #.../api/v1/users/me 내 프로필만 보는 url class Me(APIView): permission_classes = [IsAuthenticated] #자세한 정보는 로그인한 본인에게만 보여야하므로. def get(self, request): #..

노마드 코더 에어비앤비 클론 코딩 #11 Rest API - 2

SerializerMethodField: Serializer에 커스텀 필드를 추가하는 방법이다. #내 room의 평균 리뷰 점수가 몇인지 #rooms. serializers.py class RoomDetailSerializer(ModelSerializer): owner = TinyUserSerializer(read_only = True) #users.serializers.py에서 만든 serializer amenities = AmenitySerializer(read_only=True,many=True) category = CategorySerializer(read_only=True) rating = serializers.SerializerMethodField() #SerializerMethodField로..

노마드 코더 에어비앤비 클론 코딩 #11 Rest API - 1

All Amenities, Perks Amenity와 Perk도 Category API를 만들 듯이 만들었다. APIView를 쓰면, request.method가 GET인지 POST인지 확인하는 조건문이 필요없다. serializers.py에서 ModelSerializer를 상속받아서 사용하면, 'id', 'created_at', 'updated_at'은 자동으로 read_only로 되어있다. def ... ... if serializer.is_valid(): amenity = serializer.save() #유효하다면 amenity에 저장 return Response(AmenitySerializer(amenity).data) #amenity를 번역하고 데이터 뽑아서 리턴 ... Rooms Rooms는..

노마드 코더 에어비앤비 클론 코딩 #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에 들어갈 수 있는 것처럼 다대다의 관계 ..

노마드 코더 에어비앤비 클론코딩 #5 USERS APP

1. 유저 프로필 커스텀 ( 프로필 사진, 카카오톡 로그인, 페이스북 로그인, ...) 새로운 프로젝트일 때 하는 것을 추천. 기존에 이미 데이터가 있다면 db 파일을 다 지워야할 수도 있다. 기본 유저 모델로 충분하더라도 커스텀 모델을 만들어 사용하는 것을 추천한다. User 모델을 우리만의 커스텀 User 모델로 교체 User App 만들기 ('python manage.py startapp users') > User Model 만들기 from django.contrib.auth.models. import AbstractUser #django가 사용하는 User를 가져와서 재사용 class User(AbstractUser): ... AbstractUser에 더 많은 기능이 있다. > Django에게 기..

728x90