-
django signup CBVProject 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