ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • django Login CBV
    Project 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

    댓글

Designed by Tistory.