-
django sessionProject using python/Cloning Airbnb 2021. 3. 6. 18:09
session 이란?
session은 browser가 아닌 server side에 client 정보를 담는 것을 말한다. Client 측에서 session 값을 저장하는 것을 cookie라고 한다. 하지만 django는 cookie의 user 정보를 담지 않고 session id만 저장하고 이 session id로 server에 있는 user의 정보와 communication을 한다.
그래서 request는 session_key가 담겨져있다.
url 설정
config/urls.py
urlpatterns = [ path("users", include("users.urls", namespace="users")), ]
users/urls.py
from django.urls import path from . import views app_name = "users" urlpatterns = [path("switch-hosting/", views.switch_hosting, name="switch-hosting")]
{% url %}
is_hosting은 user가 현재 상태가 host mode냐 아니냐를 결정한다. host mode일 때는 create room 기능을 제공하고 host mode가 아닐 때는 guest mode이므로 자신이 예약한 방을 볼 수있도록 한다.
session function
users/views.py
request.session["is_hosting"]에 값이 할당 되어 있으면 del로 삭제를 하고 할당되어 있지 않다면 삭제할 것이 없기 때문에 KeyError가 발생해서 True 값을 할당한다.
from django.shortcuts import redirect, reverse, render def switch_hosting(request): try: del request.session["is_hosting"] except KeyError: request.session["is_hosting"] = True return redirect(reverse("core:home"))
참고 자료
- 노마드 코더의 Airbnb 클론 강의
- session에 대한 설명
- django session
소스 코드
github.com/zpskek/airbnb-clone-v3/commit/a447960321cd1cb71b6a5247d702c94d3efcba2d
'Project using python > Cloning Airbnb' 카테고리의 다른 글
django Http404() (0) 2021.03.08 django translator (0) 2021.03.07 django room detail by CBV (0) 2021.03.06 django room detail by FBV (0) 2021.03.06 django change password by CBV (0) 2021.03.05