ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • django signup CBV
    Project using python/Cloning Airbnb 2021. 3. 1. 14:53

    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("signup/", views.SignUpView.as_view(), name="signup")]
    

     

    {% url %}

      url template tag를 이용해서 signup page로 갈 수 있게 한다. {% url 'users:signup' %}은 /users/signup과 같다.

     

    CBV(Class Based View)

    users/views.py

      CBV는 django에서 정의한 여러가지 View들을 이용한다. 그 중 FormView를 이용해서 signup page를 작성한다. signup 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
    from django.views.generic import FormView
    from django.db.utils import IntegrityError
    from django.shortcuts import redirect, reverse
    from django.urls import reverse_lazy
    from . import forms
    
    
    class SignUpView(FormView):
        form_class = forms.SignUpForm
        success_url = reverse_lazy("core:home")
        template_name = "pages/users/signup.html"
    
        def form_valid(self, form):
            try:
                form.save()
                email = form.cleaned_data.get("email")
                password = form.cleaned_data.get("password")
                authenticate(self.request, username=email, password=password)
                return super().form_valid(form)
            except IntegrityError as error:
                print(error)
                return redirect(reverse("users:signup"))
    

    참고 자료

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

    소스 코드

    github.com/zpskek/airbnb-clone-v3/commit/e040814231fd98a1788fc4b999e72048e33eb554

    'Project using python > Cloning Airbnb' 카테고리의 다른 글

    django login FBV using forms.py  (0) 2021.03.02
    django login FBV  (0) 2021.03.02
    django signup FBV using forms.py  (0) 2021.03.01
    django signup FBV  (0) 2021.03.01
    tailwind customzing  (0) 2021.02.28

    댓글

Designed by Tistory.