Django form Login
1. 로그인 예외처리
1 | <form.py> |
2 | class LoginForm(forms.Form): |
3 | username = forms.CharField( |
4 | error_messages={ |
5 | 'required': '아이디를 입력해주세요.' |
6 | }, |
7 | max_length=32, label="사용자이름" |
8 | ) |
9 | password = forms.CharField( |
10 | error_messages={ |
11 | 'required': '비밀번호를 입력해주세요.' |
12 | }, |
13 | widget=forms.PasswordInput, label='비밀번호' |
14 | ) |
15 | |
16 | def clean(self): |
17 | cleaned_data = super().clean() |
18 | username = cleaned_data.get('username') |
19 | password = cleaned_data.get('password') |
20 | |
21 | if username and password: |
22 | try: #1 |
23 | user = User.objects.get(username=username) |
24 | if not check_password(password, user.password): |
25 | self.add_error('password', '비밀번호를 틀렸습니다.') |
26 | else: |
27 | self.user_id = user.id |
28 | except Exception: #2 |
29 | self.add_error('username', '존재하지 않는 아이디입니다.') |
1) 예외가 발생할 수 있는 문장입니다.
2) 예외가 발생한 경우, form의 error필드에 데이터를 삽입할 수 있습니다.
2. 404페이지로 redirect
1 | from django.http import Http404 |
2 | |
3 | try: |
4 | board = Board.objects.get(pk=pk) |
5 | except Board.DoesNotExist: |
6 | raise Http404('페이지를 찾을 수 없습니다.') #1 |
1) raise Http404(‘보여줄 메시지’)를 사용하여 404페이지로 redirect 시킬 수 있습니다.