十八. 增加一个项目协作留言板功能(四)----- 增加实施步骤的增删改查功能

本文介绍了如何在Django项目中增加任务实施步骤的查看、修改和删除功能。首先在任务编辑页面显示实施步骤,接着通过建立链接、更新urls.py和创建process_edit.html实现步骤修改。最后,通过AJAX添加删除功能,并验证其有效性。
摘要由CSDN通过智能技术生成

进入任务列表,我们无法查看到相应的实施步骤,那么接下来我们就针对实施步骤进行相应的处理。

 

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)  验证删除功能


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值