59번째 줄: |
59번째 줄: |
| === view 추가 === | | === view 추가 === |
| 다음과 같이 뷰를 추가한다.<syntaxhighlight lang="python"> | | 다음과 같이 뷰를 추가한다.<syntaxhighlight lang="python"> |
| + | from .models import Profile |
| + | |
| @login_required() | | @login_required() |
| def profile_create(request): | | def profile_create(request): |
− | pass | + | if request.method == "POST": |
| + | form = Profile_create_form(request.POST) |
| + | if form.is_valid(): |
| + | username = form.cleaned_data.get('identifier') # 유저아이디를 입력받는다. |
| + | raw_password = form.cleaned_data.get('password') # 패스워드를 입력받는다. |
| + | user = authenticate(username=username, password=raw_password) # 인증 진행 |
| + | if user: # 유저모델이 반환된다면.. 프로필 모델에 저장한다. |
| + | profile = Profile() |
| + | profile.username = form.cleaned_data.get('username') |
| + | profile.nickname = form.cleaned_data.get('nickname') |
| + | profile.email = form.cleaned_data.get('email') |
| + | profile = profile.save() |
| + | request.user.profile = profile # 해당 로그인한 유저의 프로필을 이 프로필로 채운다. |
| + | request.user.save() |
| + | return redirect('account:profile') |
| + | else: |
| + | form.add_error('identifier','비밀번호 혹은 아이디가 다릅니다.') # 인증이 안되면 필드에러를 발생시킨다. |
| + | else: |
| + | form = Profile_create_form() |
| + | context = {'form': form, |
| + | } |
| + | return render(request, 'account/profile_create.html', context) |
| + | |
| </syntaxhighlight> | | </syntaxhighlight> |
| | | |
| === view에서 사용할 form 추가 === | | === view에서 사용할 form 추가 === |
− | <syntaxhighlight lang="python"> | + | 계정 검증을 해야하기 때문에 모델에 기반한 폼이 아니라 일반 폼으로 제작한다.<syntaxhighlight lang="python"> |
− | from .models import Profile
| + | class Profile_create_form(forms.Form): |
− | class ProfileForm(forms.ModelForm): | + | identifier = forms.CharField() |
− | class Meta: | + | password = forms.PasswordInput() |
− | model = Profile
| + | username = forms.CharField(max_length=10) |
− | fields = ['username', 'email', 'nickname']
| + | nickname = forms.CharField(max_length=10) |
| + | email = forms.EmailField() |
| </syntaxhighlight> | | </syntaxhighlight> |
| [[분류:장고 기능구현(초급)]] | | [[분류:장고 기능구현(초급)]] |