2021. 5. 23. 14:22ใBackend/๐ Python
FBV(function based view)๊ฐ ์๋ CBV(class based view)๋ก ํ์๊ฐ์ ์ ์์ฑํ๋ฉด,
Django๊ฐ ์ ๊ณตํ๋ class๋ฅผ ์์๋ฐ๊ธฐ ๋๋ฌธ์ ๋ ๊ฐ๊ฒฐํ ์ฝ๋๋ก ์์ฑํ ์ ์์ต๋๋ค.
Views.py
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django.views.generic import CreateView
from django.urls import reverse_lazy
class AccountCreateView(CreateView):
model = User
form_class = UserCreationForm
success_url = reverse_lazy('account:hello_world')
template_name = 'create.html'
์ฐ์ views.py์์ AccountCreateView๋ผ๋ ํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด๋น ํด๋์ค๋ CreateView๋ผ๋ ํด๋์ค๋ฅผ ์์๋ฐ๋๋ฐ, ์ด๋ Django์์ ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณตํ๋ ํด๋์ค, ์ฆ ์ด๋ฏธ ๊ตฌํ๋์ด ์๋ ์ฝ๋๋ฅผ ์์ํจ์ ๋ปํฉ๋๋ค.
AccountCreateView๋ ๊ธฐ๋ณธ ๋ชจ๋ธ๋ก User๋ฅผ ํ ๋น๋ฐ๋๋ฐ, ์ด ์ญ์ Django์ ๊ธฐ๋ณธ ์ ๊ณต ๋ชจ๋ธ์ ๋๋ค.
๋ง์ง๋ง์ผ๋ก UserCreationForm ์ญ์ Django ๊ธฐ๋ณธ ์ ๊ณต ๋ชจ๋ธ์ ๋๋ค.
ํ์๊ฐ์ form์ html์์ ์ผ์ผ์ด ๊ตฌํํ ํ์ ์์ด, ๋ฏธ๋ฆฌ ๊ตฌํ๋ form์ ๊ฐ์ ธ์ ๊ทธ๋๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋์์ค๋๋ค.
์ด๋ ๊ฒ ํ์๊ฐ์ form์ ๋ด์ฉ์ ๋ชจ๋ ์์ฑ ํ ์ ์ถ ๋ฒํผ์ ๋๋ฅด๋ฉด,
success_url์ ํ ๋น๋ reverse_lazy์ ๋ฐ๋ผ, urls.py์ hello_world๋ผ๋ ์ด๋ฆ์ url๋ก ๋ณด๋ด์ง๋๋ค.
(reverse_lazy์ reverse์ ์ฐจ์ด: ํจ์์ ํด๋์ค๋ฅผ ๋ถ๋ฌ์ค๋ ์ฐจ์ด ๋๋ฌธ์ cbv์์ reverse_lazy์ฌ์ฉ)
Urls.py
from django.urls import path
from account.views import AccountCreateView, hello_world
app_name = "account"
urlpatterns = [
path('hello_world', hello_world, name='hello_world'),
path('create/', AccountCreateView.as_view(), name='create'), # class์ as_view()๋ฅผ ๋ถ์ฌ์ฃผ์ด์ผ ํ๋ค.
]
CBV์์ class ๋ช ๋ค์ .as_view()๋ฅผ ๋ถ์ฌ view์ ์ญํ ์ ๋ถ์ฌํฉ๋๋ค.
Create.html
<div style="text-align: center; max-width: 500px; margin: 4rem auto">
<div class="mb-4">
<h4>SingUp</h4>
</div>
<form action="" method="post">
{% csrf_token %}
{% bootstrap_form form %}
<input type="submit" class="btn btn-dark rounded-pill col-6 mt-3">
</form>
</div>
bootstrap์ ์ด์ฉํ์ฌ ์๊ฐ์ ์ผ๋ก ๊พธ๋ฉฐ์ฃผ์์ต๋๋ค.
'Backend > ๐ Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Django CBV (3) - DetailView (0) | 2021.05.23 |
---|---|
Django CBV (2) - ๋ก๊ทธ์ธ, ๋ก๊ทธ์์ ๊ตฌํ (0) | 2021.05.23 |
Django Bootstrap4 ์ฐ๋ (0) | 2021.05.23 |
ํ์ด์ฌ ๋ฉ์๋ ์ค๋ฒ๋ผ์ด๋ฉ, ์ค๋ฒ๋ก๋ฉ (2) | 2021.05.18 |
ํ์ด์ฌ lambda, filter, reduce (0) | 2021.05.18 |