-
django user profile CBVProject using python/Cloning Airbnb 2021. 3. 4. 11:34
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("login/", views.LoginView.as_view(), name="login")]
{% url %}
url template tag를 이용해서 signup page로 갈 수 있게 한다. {% url 'users:login' %}은 /users/login과 같다.
CBV(Class Based View)
users/views.py
CBV는 django에서 정의한 여러가지 View들을 이용한다. 그 중 DetailView를 이용해서 User Profile을 작성한다. 여기서 반드시 필요한 attribute는 model이다.
- model : page를 구성할 main model이다.
- context_object_name : model의 이름을 정의한다.
- template_name : rendering할 template이다.
- def get_context_data() : "user_obj" 이외에도 추가로 client에 context를 만들 수 있다.
from django.views.generic import DetailView class UserProfileView(mixins.LoginOnlyView, DetailView): """ User Profile View """ model = models.User context_object_name = "user_obj" template_name = "pages/users/userDetail.html" def get_context_data(self, **kwargs): context = super().get_context_data() page = int(self.request.GET.get("page", 1)) page_sector = ((page - 1) // 5) * 5 user_obj = context["user_obj"] qs = user_obj.rooms.all() paginator = Paginator(qs, 12, orphans=6) rooms = paginator.get_page(page) context["page_sector"] = page_sector context["rooms"] = rooms return context
참고 자료
- 노마드 코더의 Airbnb 클론 강의
- DetailView
소스 코드
github.com/zpskek/airbnb-clone-v3/commit/de9ae5ceb631c80e9e16db63e9f3d775d36ad315
'Project using python > Cloning Airbnb' 카테고리의 다른 글
django update profile by CBV (0) 2021.03.05 django Update Profile by FBV (0) 2021.03.05 django user profile FBV (0) 2021.03.04 django mailgun.com 연동(interlocking) (0) 2021.03.04 django kakao login (0) 2021.03.03