| 5번째 줄: |
5번째 줄: |
| | path('update/', views.update, name='update'), | | path('update/', views.update, name='update'), |
| | </syntaxhighlight> | | </syntaxhighlight> |
| − | ===Form 추가=== | + | |
| − | 장고에서 제공하는 UserChangeForm을 상속할 필요는 없다. 기본 폼이 난 맘에 안들어.<syntaxhighlight lang="python3">
| + | = 장고 제공 폼 사용 = |
| − | class UserUpdateForm(forms.ModelForm): | + | 가장 간편한 방법이다. |
| | + | |
| | + | === form 추가 === |
| | + | <syntaxhighlight lang="python3"> |
| | + | from django.contrib.auth.forms import UserChangeForm # 제공하는 폼이 있다. |
| | + | from django.contrib.auth import get_user_model # 장고에 커스텀으로 등록한 모델을 불러온다. |
| | + | |
| | + | class User_update_form(UserChangeForm): |
| | class Meta: | | class Meta: |
| − | model = get_user_model() | + | model = get_user_model() # 설정된 커스텀모델 |
| − | fields = ['username', 'email', 'nickname'] | + | fields = ["nickname", "email"] # password1,2 필드는 자동추가된다. |
| | </syntaxhighlight> | | </syntaxhighlight> |
| − | ===view 추가=== | + | |
| | + | === view 추가 === |
| | <syntaxhighlight lang="python3"> | | <syntaxhighlight lang="python3"> |
| | from .forms import UserUpdateForm | | from .forms import UserUpdateForm |
| 40번째 줄: |
48번째 줄: |
| | return render(request, 'user_update.html', {'form': form}) | | return render(request, 'user_update.html', {'form': form}) |
| | </syntaxhighlight> | | </syntaxhighlight> |
| − | ==비밀번호 수정, 비밀번호 바꾸기== | + | =커스텀 폼을 사용하는 경우= |
| | + | 사실, 유저객체를 얻고 비밀번호만 바꿀거라면 다음의 코드로 간단하게 변경된다. |
| | + | |
| | + | <code>user.set_password(password)</code> |
| | + | |
| | + | 그래도 폼을 사용해 보겠다면 아래와 같이 사용이 가능하겠다. |
| | + | |
| | + | ===Form 추가=== |
| | + | 장고에서 제공하는 UserChangeForm을 상속할 필요는 없다. 기본 폼이 난 맘에 안들어.<syntaxhighlight lang="python3"> |
| | + | class UserUpdateForm(forms.ModelForm): |
| | + | class Meta: |
| | + | model = get_user_model() |
| | + | fields = ['username', 'email', 'nickname'] |
| | + | </syntaxhighlight> |
| | + | ===비밀번호 수정, 비밀번호 바꾸기=== |
| | + | 커스텀 폼의 경우 패스워드에 대해 따로 처리해주어야 한다. |
| | + | |
| | ===url 추가=== | | ===url 추가=== |
| | <code>path('password/', views.password, name='password'),</code> | | <code>path('password/', views.password, name='password'),</code> |
| − | ===form 추가===
| |
| − | 폼은 제공해주는 걸 가져다 쓴다.
| |
| | ===view 추가=== | | ===view 추가=== |
| − | <syntaxhighlight lang="python3"> | + | 폼을 건들 필요 없이, 뷰에서 바로 제공하는 폼을 사용하면 된다.(키 이름은 password1, 2 이니, 탬플릿에선 적당히 고쳐 사용할 것.)<syntaxhighlight lang="python3"> |
| | from django.contrib.auth.forms import PasswordChangeForm | | from django.contrib.auth.forms import PasswordChangeForm |
| | from django.contrib.auth import update_session_auth_hash | | from django.contrib.auth import update_session_auth_hash |
| 64번째 줄: |
86번째 줄: |
| | return render(request, 'user_update_password.html',{'form':form}) | | return render(request, 'user_update_password.html',{'form':form}) |
| | </syntaxhighlight> | | </syntaxhighlight> |
| − | ===template에 추가===
| + | |
| | [[분류:장고 기능구현(초급)]] | | [[분류:장고 기능구현(초급)]] |