从request.POST中的HTML获取对象ID

时间:2020-02-24 11:18:49

标签: django django-forms

我有一个用户,他可以添加任务列表。我想让他能够删除这些任务,或标记为已完成。

问题是由于非唯一ID的问题,我的解决方案仅在用户执行一项任务时才起作用

是否有任何方法可以将id传递给html,以便在视图中轻松访问?谢谢!

这是我当前的代码

{% for task in tasks %}
        <form id='is_checked' method='POST' action="{% url 'mark_as_done'%}" enctype="multipart/form-data">
            {% csrf_token %}
            <div class="input-group-text">
                <input type="hidden" id="id_checked" value="{{task.id}}" name = "id_checked">
            </div>
        </form>

        <form class="input-group" action="{% url 'delete_task'%}" method='POST' enctype="multipart/form-data">
            {% csrf_token %}
            <div class="input-group-prepend">
                <div class="input-group-text">
                    <input onChange="document.getElementById('is_checked').submit()" type="checkbox" {% if task.is_done %}checked{% endif %}>
                </div>
            </div>
            <h7 type="text" class="form-control">{{task}}</h7>
            <input type="hidden" id="id" value="{{task.id}}" name = "id">
            <button type="submit" class="input-group-append btn btn-danger">Delete</button>
        </form>


    {% endfor %}

在视图中:

def delete_task(request):
    if request.method == 'POST':
        task = Task.objects.get(pk=request.POST['id'])
        task.delete()
        return redirect('tasks')

@login_required()
def mark_as_done(request):
    if request.method == 'POST':
        task = Task.objects.get(pk=request.POST['id_checked'])
        task.is_done = True
        task.save()
    return redirect('tasks')```



0 个答案:

没有答案