十七. 增加一個項目協作留言板功能(三)----- 增加任務的修改和刪除功能



任務的修改功能主要是進入任務內部,進行實施步驟的添加功能,並對一些內容進行更改,例如,聯繫人方式等。

 

1.通過views.py建立編輯任務函數:

#任務的編輯
def task_edit(request, pk):
    #獲取相關任務實例
    task_ins = get_object_or_404(Task, pk=pk)
    #如果收到了相應的POST提交
    if request.method == 'POST':
        #任務聯繫人爲可編輯選項,並填充原先的任務聯繫人
        task_ins.task_contacts = request.POST['task_contacts']
        task_ins.save()

        #通過所在task_id獲取task對象
        process_task = Task.objects.get(id = task_ins.id)
        #如果獲取的實施步驟內容不爲空,建立process對象,並增加相關信息
        if request.POST['process_content'].strip(' ') != '':
            process_ins = Process()
            process_ins.task = process_task
            process_ins.process_content = request.POST['process_content'].strip(' ')
            process_ins.process_signer = request.user
            process_ins.save()

        return redirect('task_edit', pk=task_ins.id)

    context = {
        'task': task_ins,
        'user': str(request.user),
        'sub_title': '編輯任務',
    }
    return render(request, 'task_edit.html', context)


2.建立task_edit.html:

{% extends "index.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block page_title %}
    任務處理
{% endblock %}
{% block container %}
    <div class="row">
    <div class="col-sm-12 pull-left">
        <!---任務基礎信息 BEGIN--->
    <!----需要提交的內容,放於form中---->
    <div class="col-sm-4 pull-left">

      <div id="div_id_task_title" class="form-group">
           <label for="id_task_title" class="control-label"><strong>任務名稱</strong></label>
           <div class="controls">
            <label for="id_task_title" class="control-label">{{ task.task_title }}</label>
               <label for="id_task_category" class="control-label">[</label>
               {{ task.task_category }}<label>]</label>
            </div>
        </div>
    <form method='POST' action='{% url 'task_edit' pk=task.id %}'>{% csrf_token %}

        <div id="div_id_task_contacts" class="form-group">
            <label for="id_task_contacts" class="control-label"><strong>聯繫人員</strong></label>
            <div class="controls ">
             <textarea class="textarea form-control"  id="id_task_contacts" name="task_contacts" rows="2" {% if task.task_status == '已結單' %}readonly="readonly"{% endif %}/>{{ task.task_contacts }}</textarea>
             </div> </div>

        <div id="div_id_task_member" class="form-group">
            <label for="id_task_member" class="control-label  requiredField"><strong>實施人員</strong></label>
            <div class="controls "> <input class="textinput textInput form-control" id="id_task_member" maxlength="255" name="task_member" type="text" value="{% for member in task.task_member.all %}{{ member }}  {% endfor %} " readonly/> </div> </div>
        <!---任務基礎信息 END--->
    <!--如果任務的狀態是處理中,那麼以下按鈕正常出現,如果是其他狀態,那麼這些按鈕不出現-->
        <br/><br/>
     {% if task.task_status == '處理中' %}
         <!-- 新增處理過程 BEGINS -->
            <label for="id_process_content" class="control-label">
                新增處理過程 </label>

            <div class="controls ">
                <textarea class="textarea form-control"  id="id_process_content" name="process_content" rows="10">
            </textarea>
            </div>
     <!--如果在處理中,那麼顯示'提交'及'取消'按鈕--->
        <input class='btn btn-primary' type='submit' value='提交' />
        <a href="{% url 'task_list' %}">
     <input class='btn btn-default' type='button' value='取消' /></a>

    {% else %}
    <!--如果任務已經結束,那麼僅顯示'返回'按鈕--->
        <a href="{% url 'task_list' %}">
     <input class='btn btn-default' type='button' value='返回' /></a>

    {% endif %}
    </form></div>

    </div>

    </div>
    {% include 'modal.html' %}

{% endblock %}
{% block page_javascript %}
    {% include 'modal_js.html' %}
{% endblock %}

3.增加一條記錄,並進入修改頁面查看結果:增加一條任務記錄

點擊修改,進入修改內容


4.增加任務的刪除功能,參照之前的方式,通過modal方式進行刪除。首先,views.py中增加相應的刪除功能。


Views.py:

#任務列表的任務刪除
def task_delete(request, pk):
    #獲取選定的task實例
    task_ins = get_object_or_404(Task, pk=pk)
    #如果接收到了刪除的POST提交,則刪除相應條目
    if request.method == 'POST':
        try:
            task_ins.delete()
            #刪除成功,則data信息爲success
            data = 'success'
        except IntegrityError:
            #如因外鍵問題,或其他問題,刪除失敗,則報error
            data = 'error'
        #將最後的data值傳遞至JS頁面,進行後續處理,safe是將對象序列化,否則會報TypeError錯誤
        return JsonResponse(data, safe=False)


5.嘗試將創建記錄刪除


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章