为什么这个 DeleteView 实际上并没有删除 Django 中的条目?



在我的Django应用中,删除视图不起作用。当我点击一个条目时,页面只是刷新,什么也没发生。该条目不会从数据库中删除。创建和更新条目工作良好。这些文件有什么问题吗?

microtarjetas/views.py:

class DeleteCardView(DeleteView):
model = Card
template_name = 'microtarjetas/delete_card.html'
form_class = CardForm
success_url = '/cards/'

模板/microtarjetas/delete_card.html:

{% extends 'base.html' %} {% load static %} {% block content %}
<h2>Delete card</h2>
<p>Are you sure you want to delete "{{ object }}"?</p>
<form method="post">{% csrf_token %}
<input type="submit" value="Confirm" />
</form>
{% endblock %}

来自templates/microtarjetas/cards.html的一个片段:

<tbody>
{% for card in cards %}
<tr>
<td>{{ card.word_en }}</td>
<td>{{ card.word_es }}</td>
<td><a href="{% url 'update_card' card.pk %}">update</a></td>
<td><a href="{% url 'delete_card' card.pk %}">X</a></td>
</tr>
{% endfor %}
</tbody>

forms.py:

from django import forms
from .models import Card
class CardForm(forms.ModelForm):
class Meta:
model = Card
fields = "__all__"

models.py:

class Card(models.Model):
word_en = models.CharField(max_length = 30)
word_es = models.CharField(max_length = 30)

def get_absolute_url(self):
return "/cards"

def __str__(self):
return f"{self.word_en} --- {self.word_es}"

urls . py:

from django.urls import path
from . import views

urlpatterns = [
path('', views.HomeView.as_view(), name='home'),
path('cards/', views.CardsView.as_view(), name='cards'),
path('cards/new', views.CreateCardView.as_view(), name='create_card'),
path('cards/<pk>/delete/', views.DeleteCardView.as_view(), name='delete_card'),
path('cards/<pk>/update/', views.UpdateCardView.as_view(), name='update_card'),
]

我添加一个{{form}}标签到delete_card.html表单,它的工作(虽然它添加了两个输入字段的表单是不必要的):delete_card.html

没有提交带有表单数据的表单。您应该像这样更新代码:

<form method="post">{% csrf_token %}
{{ form }}
<input type="submit" value="Confirm" />
</form>

更多信息可在文档中找到。

最新更新