2016-11-18

Django 1.10.3 Tutorial : 관리자 수정하기


  • $PRJNAME/web/prjname/templates/mgmt/admin/update_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="update_form" action="/mgmt/admin/update" method="post">
        {% csrf_token %}
        <div class="form-group">
          <label>아이디</label>
          {{ form.userid }}
          {{ form.id }}
        </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/forms/mgmt/admin.py)에 다음을 추가한다.
    ...
     
    class AdminUpdateForm(forms.Form):
        id     = forms.CharField(widget=forms.HiddenInput)
        userid = forms.CharField(max_length=255, widget=forms.TextInput(attrs={'class':'form-control', 'readonly':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, }))
     
    ...
  • 뷰($PRJNAME/web/prjname/views/mgmt/admin.py)에 다음을 추가한다.
    ...
     
    # 관리자 수정 폼
    def update_form(request, id):
        admin = AdminModel.objects.get(id=id)
        data = { 'id': admin.id,
                 'userid': admin.userid,
                 'nick': admin.nick,
                 'mobile': admin.mobile }
        form = AdminUpdateForm(data)
        return render(request, 'mgmt/admin/update_form.html', {'form': form, 'admin_id': id})
     
    ...
  • $PRJNAME/web/prjname/urls.py 에 다음을 추가한다.
        url(r'^mgmt/admin/update_form/(?P<id>[0-9]+)$', mgmt_admin.update_form, name='mgmt_admin_update_form'),
  • 이제, 수정 버튼을 클릭하면 수정할 수 있는 폼이 나타나게 될 것이다. 마지막으로 실제로 수정을 처리하는 루틴을 작성하고 URL라우터를 등록하자.
  • $PRJNAME/web/prjname/views/mgmt/admin.py 에 다음을 추가한다.
    ...
     
    # 관리자 수정
    def update(request):
        form = AdminUpdateForm(request.POST)
        if form.is_valid():
            admin_id     = form.cleaned_data['id']
            admin_nick   = form.cleaned_data['nick']
            admin_mobile = form.cleaned_data['mobile']
     
            admin = AdminModel.objects.get(id=admin_id)
            admin.nick = admin_nick
            admin.mobile = admin_mobile
            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/update$', mgmt_admin.update, name='mgmt_admin_update'),

댓글 없음:

댓글 쓰기