[Django] register
User management (1)
/ form 만들기 / form 라이브러리 crispy로 꾸미기
Register
- 회원관리를할 account 앱을 생성해준다.
- settings.py에 새로 만든 account app 을 등록해주고 main 앱 url 패스를 설정해준뒤에 account 앱에서 urls.py 와 views.py 의 로직을 짜준다.
- 간단한 작업이지만 순서대로 해야 나중에 덜 고생한다 ㅜ 귀찮더라도 단계별로 확인해야함
def register(request): return HttpResponse('Account url setup!')
forms.py
from django import forms
# Registration form
class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username','email','password1','password2']
def __init__(self, *args, **kwargs):
super(CreateUserForm, self).__init__(*args, **kwargs)
# Maek email field as required
self.fields['email'].required= True
# Email validation
def clean_email(self):
email = self.cleaned_data.get('email')
if User.objects.filter(email=email).exists():
raise forms.ValidationError('This email is invalid')
# Len function updated
if len(email) >= 350:
raise forms.ValidationError('Your email is too long')
return email
- 장고는 다 알아서 준비되어있어서 그냥 갖다 쓰기만 하면된다.
- 플라스크랑 비슷한 부분이 많은데 우선 forms를 통해 유효성 검사를 할 수 있다.
- super() 로 CreateUserForm을 상속받아 초기화 시켜준다.
- 참고 : https://supermemi.tistory.com/entry/Python-3-super%ED%81%B4%EB%9E%98%EC%8A%A4-selfinit-%EC%97%90-%EB%8C%80%ED%95%B4-%EC%A0%9C%EB%8C%80%EB%A1%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%9
- 기존에 User 데이터에 동일한 이메일 주소가 있는지와 이메일 주소 길이 정도의 유효성 검사를 해준다.
views.py
def register(request):
return render(request, 'account/registration/register.html')
- templates/account 폴더를 만들어주고 추가로 registration 폴더를 만들어준다. (여기서 이메일 유효성 진행할 예정)
base.html and store.html
base.html
<li class="nav-item">
<a class="btn btn-alert navbar-btn " type="button" href="{% url 'register' %}"> Register </a>
</li>
store.html
<a href="{% url 'register' %}" class="btn btn-primary my-2"> Create an account </a>
- 홈페이지에서 register 버튼과 url을 연결해준다.
- urls.py 에서 name을 register 로 지어줬는데 이 부분이랑 연결된다고 이해하면 됨
form 넘겨주기 views.py
def register(request):
form = CreateUserForm()
if request.method == 'POST':
form = CreateUserForm(request.POST)
if form.is_valid():
form.save()
return redirect('store')
context = {'form':form}
return render(request, 'account/registration/register.html', context=context)
- 단순히 로직 확인정도로만 짜준다.
- 이전에 만든 CreateUserForm을 form 으로 넘겨준다.
crispy 라이브러리로 form 꾸미기
- register.html 에서 현재 form은 엉망이다.
-
하지만 부트스트랩처럼 라이브러리를 통해 쉽게 꾸며줄수 있다.
- crispy를 이용하면 아래와 같이 보기 좋고 쉽고 빠르게 꾸밀 수 있다.
- 참고 : https://django-crispy-forms.readthedocs.io/en/latest/install.html
- 부트스트랩 이외에도 여러가지를 사용할 수 있다.
댓글남기기