Django 1.10.3 Tutorial : 관리자 비밀번호 변경하기
- 템플릿 디렉토리에
$PRJNAME/web/prjname/templates/mgmt/admin/password_form.html
파일을 생성한다.- password_form.html
<div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <h4 class="modal-title">관리자 비밀번호 변경</h4> </div> <div class="modal-body"> <form name="chg_passwd_form" action="/mgmt/admin/change_password" method="post"> {% csrf_token %} <div class="form-group"> <label>아이디</label> {{ form.userid }} {{ form.id }} </div> <div class="form-group"> <label>별명</label> {{ form.nick }} </div> <div class="form-group"> <label>비밀번호 <small>(필수)</small></label> {{ form.passwd1 }} </div> <div class="form-group"> <label>비밀번호 확인 <small>(필수)</small></label> {{ form.passwd2 }} </div> <div class="form-group" style="text-align: right"> <input class="btn btn-primary" type="submit" value="관리자 비밀번호 변경" /> </div> </form> </div>
- 폼(
$PRJNAME/web/prjname/forms/mgmt/admin.py
)에 다음을 추가한다.... class AdminPasswordForm(forms.Form): id = forms.CharField(widget=forms.HiddenInput) userid = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control', 'readonly':True, })) nick = forms.CharField(widget=forms.TextInput(attrs={'class':'form-control', 'readonly':True, })) passwd1 = forms.CharField(max_length=255, widget=forms.PasswordInput(attrs={'class':'form-control', 'pattern':'[a-zA-Z0-9]+', 'required':True, })) passwd2 = forms.CharField(max_length=255, widget=forms.PasswordInput(attrs={'class':'form-control', 'pattern':'[a-zA-Z0-9]+', 'required':True, })) ...
- 뷰(
$PRJNAME/web/prjname/views/mgmt/admin.py
)에 다음을 추가한다.... # 비밀번호 수정 폼 def password_form(request, id): admin = AdminModel.objects.get(id=id) data = {'id': admin.id, 'userid': admin.userid, 'nick': admin.nick } form = AdminPasswordForm(data) return render(request, 'mgmt/admin/password_form.html', {'form': form}) ...
$PRJNAME/web/prjname/urls.py
에 다음을 추가한다.url(r'^mgmt/admin/password_form/(?P<id>[0-9]+)$', mgmt_admin.password_form, name='mgmt_admin_password_form'),
- 이제,
비밀번호변경
버튼을 클릭하면 비밀번호변경을 위한 모달 다이얼로그박스가 나타날 것이다.
- 실제로 비밀번호를 변경하는 작업을 해보자. 뷰(
$PRJNAME/web/prjname/views/mgmt/admin.py
)에 다음을 추가한다.... # 비밀번호 수정 폼 def change_password(request): form = AdminPasswordForm(request.POST) if form.is_valid(): id = form.cleaned_data['id'] passwd1 = form.cleaned_data['passwd1'] passwd2 = form.cleaned_data['passwd2'] if passwd1 != passwd2 : messages.add_message(request, messages.INFO, '새로운 비밀번호와 다시 입력한 비밀번호가 일치하지 않습니다.') return redirect('mgmt_admin_index') admin = AdminModel.objects.get(id=id) admin.password = passwd1 admin.save() messages.add_message(request, messages.INFO, '관리자 비밀번호가 정상적으로 수정되었습니다.') else: messages.add_message(request, messages.INFO, '입력 데이터가 올바르지 않습니다. 다시 변경해주세요.') return redirect('mgmt_admin_index') ...
$PRJNAME/web/prjname/urls.py
에 다음을 추가한다. 다음을 추가한다.url(r'^mgmt/admin/change_password$', mgmt_admin.change_password, name='mgmt_admin_change_password'),
- 비밀번호를 변경해보고, DB의 내용이 잘 반영되었는지 확인해보자.
$ cd $PRJNAME $ sqlite3 db.sqlite3 SQLite version 3.15.0 2016-10-14 10:20:30 Enter ".help" for usage hints. sqlite> select * from tb_admin; 1|testid1|passwd1|nick1|010-1111-1111|2016-11-16| 2|testid2|passwd2|nick2|010-2222-2222|2016-11-16| 3|testid3|passwd3|nick3|010-3333-3333|2016-11-16| 4|testid4|passwd4|nick4|010-4444-4444|2016-11-16| 5|testid5|passwd5|nick5|010-5555-5555|2016-11-16| 6|userid6|passwd6|nick6|010-6666-6666|2016-11-16| sqlite> select * from tb_admin where id = 1; 1|testid1|modified|nick1|010-1111-1111|2016-11-16| sqlite> .quit
댓글
댓글 쓰기