2016-11-18

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">&times;</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'),
  • 코드 작성은 완료되었으니, 실제 화면에서 관리자를 등록해보면 목록에 표시되는 것을 볼 수 있을 것이다.

댓글 없음:

댓글 쓰기