十八. 增加一個項目協作留言板功能(四)----- 增加實施步驟的增刪改查功能

進入任務列表,我們無法查看到相應的實施步驟,那麼接下來我們就針對實施步驟進行相應的處理。

 

1.      在任務中顯示實施步驟,由於實施步驟的增加功能已經在views.pytask_edit中已經實現了,因此在task_edit.html中只要讀取相應的process內容並予以顯示就可以了。

Task_edit.html:


  <!-----顯示處理過程 BEGIN---->
<div class="col-sm-8 pull-right">
    <div id="div_id_process_content" class="form-group">

        <div class="controls ">
        <!--從process中獲取所有的item並顯示--->
            {% for item in task.process_set.all %}

                <dl>
                <dt>處理時間</dt>
                    <dd>{{ item.process_signtime }}</dd>
                <dt>處理人</dt>
                    <dd>{{ item.process_signer }}</dd>
                </dl>

                 <dl>
                <dt>處理過程</dt>
                    <dd>{{item.process_content}}</dd>
                </dl>

                <hr/>
            {% endfor %}
        </div>
     </div>
    </div>
    <!-----處理過程 END---->

可以看到,此時再增加實施步驟,就可以在右邊列看到相應的顯示。


2.      對實施步驟進行修改

1)有時候需要進行實施步驟的修改,那麼我們在forms.py中建立實施步驟form:
#建立實施步驟的表單
class ProcessForm(forms.Form):
    process_content = forms.CharField(label = '處理過程',widget=forms.Textarea)
2) views.py中建立,實施步驟的修改功能:
#實施步驟的修改
def process_edit(request, pk):
    #獲取相應的實施步驟
    process_ins = get_object_or_404(Process, pk=pk)
    #如果收到了POST提交
    if request.method == 'POST':
        #調用process的form
        form = ProcessForm(request.POST)
        if form.is_valid():
            process_ins.process_content = request.POST['process_content'].strip(' ')
            process_ins.process_signtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
            process_ins.save()

            return redirect('task_edit', pk=process_ins.task_id)
    #將之前的process內容放入processform
    form = ProcessForm(initial={'process_content': process_ins.process_content})

    #將相應的context值傳遞到實施步驟修改頁面
    context = {
        'id': process_ins.task_id,
        'form': form,
        'sub_title': '編輯任務',

    }

    return render(request, 'process_edit.html', context)

3)      task_edit.html中建立一個修改的鏈接:

{% for item in task.process_set.all %}
…
      <!--如果用戶是該實施步驟的登記人且任務的狀態爲處理中,那麼可以對實施步驟進行更改或刪除--->
    {% if user == item.process_signer and task.task_status == '處理中' %}
    <span>
        <a href="{% url 'process_edit' item.id %}" style="color:grey">編輯</a>|
    </span>

    {% endif %}


    <hr/>
{% endfor %}

4)      urls.py中新增相關信息

#實施步驟
url(r'^process_edit/(?P<pk>\d+)/$', echo.views.process_edit, name='process_edit'),

5)      建立一個process_edit.html:

{% extends "index.html" %}
{% load crispy_forms_tags %}
{% block page_title %}
    任務處理
{% endblock %}
{% block container %}
    <div class="row">
    <div class="col-sm-6 pull-left">

    <form method='POST' action=''>{% csrf_token %}
        {{ form | crispy }}
        <br>
        <input class='btn btn-primary' type='submit' value='提交' />
        <a href="{% url 'task_edit' id %}  "><input class='btn btn-default' type='button' value='取消' /></a>
    </form>
    </div>
    </div>

{% endblock %}

6)      測試相關功能修改


3.      刪除相關實施步驟

1)  task_edit中增加刪除鏈接

<span>
    <a href="{% url 'process_edit' item.id %}" style="color:grey">編輯</a>|
    <a id="modal_button_2" class="grey" data-toggle="modal" href="#modal_form" rel="{% url 'process_delete' item.id %}" content="確認刪除內容爲{{ item.process_content }}的記錄麼?" title="刪除記錄">刪除</a>

</span>

2)  urls.py中增加相關信息

#實施步驟
url(r'^process_edit/(?P<pk>\d+)/$', echo.views.process_edit, name='process_edit'),
url(r'^process_delete/(?P<pk>\d+)/$',echo.views.process_delete, name='process_delete'),

3)  views.py中增加刪除函數,通過AJAX方式來進行刪除

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

4)  驗證刪除功能


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