我对Django很陌生,所以请使其成为新手友好的:D。
它关于一个简单的待办事项清单。我希望每个项目都有三个用于删除,编辑或在这种情况下检查的按钮。
在下面的代码中,我想创建一个将布尔值设置为True的复选框。但是理解做任何事情的代码都只是在刷新一面。命令中没有错误消息或其他信息。
你们能发现错误吗?

很高兴为您提供帮助。

HTML:

                        <form method="POST">
                            {% csrf_token %}
                            <button id="done" type="POST" action="{% url 'complete' do.id%}">
                                <i class="fas fa-check"></i></button>
                            <button id="edit"><i class="fas fa-edit"></i></button>
                            <button id="delete" action="#" method="POST"><i class="fas fa-trash"></i></button>
                            <a href="/todo/{{do.id}}">{{do.task_title}}</a>
                        </form>
                    </li>


网址:

    urlpatterns = [
        # match list,
        url(r'^$', views.index, name='index'),
        url(r'^add/$', views.addTodo, name='add'),

        url(r'^(?P<pk>[0-9]+)/complete/$', views.completeTodo, name='complete'),
..
]


视图:

def completeTodo(request, todo_id):

    if request.method =='POST':
        print('alive')
        todo = Task.objects.get(pk=todo_id)
        todo.complete = True
        todo.save()

    return redirect('index')


模型:

class Task(models.Model):
    task_title = models.CharField(max_length=50)
    task_explain = models.CharField(max_length=1500)
    complete = models.BooleanField(default=False)

    def get_absolute_url(self):
        return reverse('todo:detail', kwargs={'pk':self.pk})

    def __str__(self):
        return self.task_title

最佳答案

代码说完成视图后重定向到索引,在这种情况下,它看起来像是刷新。但是,您没有显示其完成状态的任何指示,因此没有任何变化。
您可以在某处添加{{do.complete}},也可以使用管理界面查看是否已设置complete变量。 more info here
您是否知道视图中的代码是否正在运行?

10-05 23:42