我目前正在使用Django构建一个应用程序,用于创建用户故事卡(有点像Trello板)。
在一个页面上,我将我的卡显示为列表:
该列表的代码是:
<h1>ScrumBuddy Board</h1>
<ul>
{% for card in cards.all %}
<li class="card"><a href="{% url 'card' %}/{{ card.id }}">{{ card.title }}</a>
</li>
{% endfor %}
</ul>
董事会的观点是:
def board(request):
cards = Card.objects
context = {'cards': cards}
return render(request, 'scrumbuddy/board.html', context)
我想为每张卡添加一个删除链接,将其从此列表中删除,最好使用确认对话框。关于如何做到这一点的任何建议都会很棒。
非常感谢。
我建议使用Django基于类的通用视图,在你的情况下你可能会使用ListView
和DeleteView
。
对于列表视图,您可以使用以下内容:
# views.py
from django.views.generic import ListView
from scrumbuddy.models import Card
class CardList(ListView):
model = Card
对于删除视图,这样的事情:
# views.py
from django.views.generic.edit import DeleteView
from django.urls import reverse_lazy
from scrumbuddy.models import Card
class CardDelete(DeleteView):
model = Card
success_url = reverse_lazy('card-list')
关于删除操作的确认,来自documentation主题的Django DetailView
:
显示确认页面并删除现有对象的视图。仅当请求方法为POST时才会删除给定对象。如果通过GET获取此视图,它将显示一个确认页面,其中应包含POST到同一URL的表单。
另请注意,您可以将参数传递给url
模板标记,例如:
<a href="{% url 'card' id=card.id %}">
代替:
<a href="{% url 'card' %}/{{ card.id }}">
注意:我猜测你的card.id
网址的card
参数名为id
- 如果参数名称不同,你必须根据你的urls.py
更新它。