Project using python/Cloning Airbnb

django create-review by FBV

Cog Factory 2021. 3. 18. 04:58

url 설정

config/urls.py

urlpatterns = [
    path("reviews/", include("reviews.urls", namespace="reviews"))
]

reviews/urls.py

from django.urls import path
from reviews import views

app_name = "reviews"

urlpatterns = [
		path("<int:reservation_pk>/create/", views.createReview, name="create")
    ]

FBV(Function Based View)

reviews/views.py

# reviews/views.py

from django.shortcuts import redirect, reverse
from django.contrib import messages
from . import models as review_models
from reservations import models as reservation_models


def createReview(request, reservation_pk):
    if request.method == "POST":
        review = request.POST.get("review")
        accuracy = int(request.POST.get("accuracy"))
        communication = int(request.POST.get("communication"))
        cleanliness = int(request.POST.get("cleanliness"))
        location = int(request.POST.get("location"))
        check_in = int(request.POST.get("check_in"))
        value = int(request.POST.get("value"))

        reservation = reservation_models.Reservation.objects.get_or_none(
            pk=reservation_pk
        )
        if reservation is None:
            messages.error(request, "Reservation does not exist")
            return redirect(
                reverse("reservations:detail", kwargs={"pk": reservation_pk})
            )
        room = reservation.room

        review = review_models.Review.objects.create(
            review=review,
            accuracy=accuracy,
            communication=communication,
            cleanliness=cleanliness,
            location=location,
            check_in=check_in,
            value=value,
            user=request.user,
            room=room,
        )
        return redirect(reverse("reservations:detail", kwargs={"pk": reservation.pk}))

참고 자료

  • 노마드 코더의 Airbnb 클론 강의

소스 코드

github.com/zpskek/airbnb-clone-v3/commit/3e416d1dceaa58afe9e70d7e86eb7f597d311a20