[PROJECT] AIRBNB CLONING #5
Wishlist API
部屋を保存すると、必要な名前の希望リストを作成してフォルダに保存できます.したがって、モデリングではwishlistという名前のテーブルには名前とユーザーのテーブルが必要であり、wishlistroomという名前の中間テーブルには部屋と所望のリストを接続する必要があります.
users/urls
from django.urls import path
from users.views import KakaoSignIn, WishlistView
urlpatterns = [
path("/login/kakao", KakaoSignIn.as_view()),
path("/wishlist", WishlistView.as_view()),
]
users/views
import json, jwt, requests, datetime
from django.views import View
from django.http import JsonResponse
from rooms.models import Room
from users.models import User, Wishlist, WishlistRoom
from core.utils import login_decorator
from my_settings import SECRET_KEY, ALGORITHM
class WishlistView(View):
@login_decorator
def post(self, request):
try:
data = json.loads(request.body)
room_id = data['room_id']
list_id = data['list_id']
list_name = data['list_name']
rooms = Room.objects.get(id=room_id)
user = request.user
if not Wishlist.objects.filter(id=list_id, user=user).exists():
wishlist = Wishlist.objects.create(
user = user,
name = list_name
)
else:
wishlist = Wishlist.objects.get(id=list_id, user=user)
WishlistRoom.objects.create(
room = rooms,
wishlist = wishlist
)
return JsonResponse({'message' : 'LIKED'}, status = 201)
except KeyError:
return JsonResponse({'message' : 'KEY_ERROR'}, status = 400)
except Room.DoesNotExist:
return JsonResponse({'message' : 'ROOM_DOES_NOT_EXIST'}, status = 400)
bodyには、jsonで送信されるroom_id
、list_id
、およびlist_name
のエントリが含まれている.user
はlogin_decorator
のリクエストです.userとして使用され、wishlistを保存する必要があるため、id=room_id
に指定されています.Wishlistにオブジェクトがない場合は、オブジェクトを作成します.そうでない場合は、オブジェクトを取得します.中間テーブルwishlistroomの論理も作成します.
エラーを回避するために、適切な例外処理を提供しました.
Reference
この問題について([PROJECT] AIRBNB CLONING #5), 我々は、より多くの情報をここで見つけました https://velog.io/@tritny6516/PROJECT-AIRBNB-CLONING-5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol