-
django Login CBVProject using python/Cloning Airbnb 2021. 3. 2. 11:42
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들을 이용한다. 그 중 FormView를 이용해서 login page를 작성한다. login page는 여러 가지 attribute와 funciton이 있다.
- form_class : forms.ModelForm을 상속하는 class로 초기화 한다.
- success_url : signup이 성공했을 때 redirect될 url이다.
- template_name : rendering할 template이다.
- def from_valid() : form의 유효성을 검사한다.
from django.contrib.auth import authenticate, login from django.views.generic import UpdateView from . import forms class LoginView(FormView): """ Login View """ form_class = forms.LoginForm success_url = reverse_lazy("core:home") template_name = "pages/users/login.html" def form_valid(self, form): email = form.cleaned_data.get("email") password = form.cleaned_data.get("password") user = authenticate(self.request, username=email, password=password) if user is None: return redirect(reverse("users:login")) login(self.request, user) return super().form_valid(form)
참고 자료
- 노마드 코더의 Airbnb 클론 강의
- FormView
소스 코드
github.com/zpskek/airbnb-clone-v3/commit/1e015631a73a02d2cb32e9546c4cf3e943238c3f
'Project using python > Cloning Airbnb' 카테고리의 다른 글
Using the Django authentication system (0) 2021.03.02 django logout (0) 2021.03.02 django login FBV using forms.py (0) 2021.03.02 django login FBV (0) 2021.03.02 django signup CBV (0) 2021.03.01