我在models.py文件中创建了一个模型公告
class Announcement(models.Model):
title = models.CharField(max_length=30)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
def __str__(self):
return self.title
为了删除公告记录,我创建了以下视图
def AnnouncementDelete(request, pk):
announcement = get_object_or_404(Announcement, pk=pk)
if request.method=='POST':
announcement.delete()
return redirect('/')
return render(request, 'classroom/announcement_confirm_delete.html', {'announcement': announcement})
公告的删除视图(即AnnouncementDelete)有如下url
path("delete/<int:pk>/", view=views.AnnouncementDelete, name="AnnouncementDelete"),
如果我输入
http://127.0.0.1:8000/classroom/delete/3
在浏览器上删除pk = 3的公告
现在我想要一个按钮直接删除我的记录,而不需要在浏览器上输入http://127.0.0.1:8000/classroom/delete/3
我在我的 allannouncement.html 文件中尝试了以下方法
{% extends "classroom/base.html" %}
{% block content %}
<h1>Announcements</h1>
{% for announcement in announcements %}
<!-- starting loop (posts is keyword from view) -->
<div style="border-style: solid;">
{% if announcement.teacher.user == request.user %}
<div>
<a href="{% url 'classroom:AnnouncementDelete' %}">Delete</a>
</div>
{% endif %}
{{ announcement.pk }}
<a class="mr-2">Posted by: {{ announcement.teacher }}</a>
<h2><a class="article-title">{{ announcement.title }}</a></h2>
<p class="article-content">{{ announcement.content}}</p>
</div>
{% endfor %}
{% endblock content %}
但它给出了以下错误
NoReverseMatch at /classroom/allannouncement/
Reverse for 'AnnouncementDelete' with no arguments not found. 1 pattern(s) tried: ['classroom/delete/(?P<pk>[0-9]+)/$']
然后我也尝试使用 url 传递 pk
<a href="{% url 'classroom:AnnouncementDelete' , pk=announcement.pk %}">Delete</a>
但它给出了以下错误
TemplateSyntaxError at /classroom/allannouncement/
Could not parse the remainder: ',' from ','
答案 0 :(得分:0)
删除常见的#refer this
<a href="{% url 'classroom:AnnouncementDelete' pk=announcement.pk %}">Delete</a>
答案 1 :(得分:0)
添加表单而不是链接。 添加
{% load crispy_forms_tags %}
在你的html文件中然后添加
{% if announcement.teacher.user == request.user %}
<div>
<form action="{% url 'classroom:AnnouncementDelete' announcement.id %}"
method="post">
{% csrf_token %}
<input type="submit" value="Delete">
</form>
</div>
{% endif %}