Django 1.10.3 Tutorial : 관리자 추가하기
forms
디렉토리를 생성한다.$ cd $PRJNAME/web/prjname $ mkdir forms $ cd forms $ touch __init__.py $ mkdir mgmt $ cd mgmt $ touch __init__.py
$PRJNAME/web/prjname/forms/mgmt
에admin.py
를 생성한다.# -*- coding: utf-8 -*- # ---------------------------------------------------------------------------- # File : prjname/forms/admin.py # Create Date : 2016-11-18 # ---------------------------------------------------------------------------- from django import forms class AdminInsertForm(forms.Form): userid = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class':'form-control', 'pattern':'[a-zA-Z0-9]+', 'required':True, 'autofocus':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, })) nick = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class':'form-control', 'required':True, })) mobile = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class':'form-control', 'required':True, }))
insert_form.html
을 생성한다.- insert_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="insert_form" action="/mgmt/admin/insert" method="post"> {% csrf_token %} <div class="form-group"> <label>아이디 <small>(필수) 영문으로 입력해주세요.</small></label> {{ form.userid }} </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"> <label>별명 <small>(필수)</small></label> {{ form.nick }} </div> <div class="form-group"> <label>핸드폰 <small>(필수)</small></label> {{ form.mobile }} </div> <div class="form-group" style="text-align: right"> <input class="btn btn-primary" type="submit" value="관리자 추가" /> </div> </form> </div>
$PRJNAME/web/prjname/views/mgmt/admin.py
에 다음 코드를 추가한다.... from ...forms.mgmt.admin import * ... # 관리자 추가 폼 def insert_form(request): form = AdminInsertForm() return render(request, 'mgmt/admin/insert_form.html', {'form': form}) ...
$PRJNAME/web/prjname/urls.py
에 다음을 추가한다.url(r'^mgmt/admin/insert_form$', mgmt_admin.insert_form, name='mgmt_admin_insert_form'),
관리자 추가
버튼을 클릭하면 모달 다이얼로그 박스 형식의 입력 양식이 나올 것이다.
- 이제, 실제로 DB에 관리자를 추가해보자.
$PRJNAME/web/prjname/views/mgmt/admin.py
에 다음을 추가한다.... # 관리자 추가 def insert(request): form = AdminInsertForm(request.POST) if form.is_valid(): if form.cleaned_data['passwd1'] != form.cleaned_data['passwd2']: messages.add_message(request, messages.INFO, '비밀번호가 다릅니다. 관리자 비밀번호를 다시 입력해주세요.') return redirect('mgmt_admin_index') admin, dummy = AdminModel.objects.get_or_create( userid=form.cleaned_data['userid'], nick=form.cleaned_data['nick'], ) admin.mobile = form.cleaned_data['mobile'] admin.password = form.cleaned_data['passwd1'] admin.save() messages.add_message(request, messages.INFO, '관리자가 정상적으로 추가되었습니다.') else: # messages.add_message(request, messages.INFO, '입력 값을 다시 한번 확인하시어 관리자를 추가해주세요.') messages.add_message(request, messages.INFO, form.errors) return redirect('mgmt_admin_index') ...
$PRJNAME/web/prjname/urls.py
에 다음을 추가한다.url(r'^mgmt/admin/insert$', mgmt_admin.insert, name='mgmt_admin_insert'),
- 코드 작성은 완료되었으니, 실제 화면에서 관리자를 등록해보면 목록에 표시되는 것을 볼 수 있을 것이다.
댓글
댓글 쓰기