【发布时间】:2021-01-02 02:39:14
【问题描述】:
我是 Django 的新面孔,所以如果我的问题是愚蠢的,请考虑一下。在这种情况下,我想删除我的数据库中的一个项目,如果我点击按钮,html 会将一个 id 传递给views.py,然后函数Delete() 将删除这个项目。但无论我尝试了什么都没有任何反应。
现在我在home.html 中添加了action="{% url 'todolist:delete' todo.id %}",但它遇到了一些错误:NoReverseMatch: Reverse for 'delete' with arguments '('',)' not found. 1 pattern(s) tried: ['$'],我不知道如何解决它。所以请给我一些建议,我将非常感激。
我的代码如下:
项目/urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('todolist.urls', namespace='todolist')),
]
todolist/urls.py:
app_name = "todolist"
urlpatterns = [
path('', views.Add, name = 'add'),
path('', views.Delete, name = 'delete'),
]
home.html:
<form action="{% url 'todolist:delete' todo.id %}" method="post">
{% csrf_token %}
<table>
<tbody>
{% for each in todo_list %}
<tr>
<td><div class="thing"><input type="checkbox" name="done" value="done"><label>{{each.todo}}</label></div></td>
<td><input type="button" class="edit" name="edit" value="E"></td>
<td><input type="button" class="delete" name="delete" value="x"></td>
</tr>
{% endfor %}
</tbody>
</table>
</form>
views.py:
def Delete(request, id):
if 'delete' in request.POST:
todo = Todo.objects.get(id=id)
todo.delete()
todo_list = Todo.objects.all()
return render(request, 'todolist/home.html', {'todo_list': todo_list, 'todo': todo})
【问题讨论】:
-
你为什么不用DeleteView?
-
@OsadhiVirochana 是的,显然他可以使用 DetailView。但是,目前(开始)我认为他不应该直接使用 DeleteView,因为他必须了解流程及其重要性。