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 시킬 수 있습니다.