导入
删除房源查看页面和模板
学习如何为删除房源页面创建视图和模板。
最后,我们需要创建一个页面,用于显示删除特定房源选项。
删除房源的URL
在 urls.py 文件中添加以下代码,以添加到“删除房源”页面的路径。
1path('delete_listing/<delete_id>/', views.delete_listing, name='delete_listing')
删除房源的视图
对于删除视图,我们将采用与编辑视图非常相似的方法。在 views.py 文件中添加以下代码:
1def delete_listing(request, delete_id): 2 listing = Listings.objects.get(id=delete_id) 3 if request.method == 'POST': 4 listing.delete() 5 return redirect('listings:my_listings') 6 context = {'listing': listing} 7 return render(request, 'listings/delete_listing.html', context)
首先,我们获取要删除的具体房源(第2行)。如果要删除的是第一条房源,代码为 listing = Listings.objects.get(1),这将获取 ID 为 1 的那条房源数据。类似地,我们可以在 get() 方法中使用不同的值来获取任意已创建的房源。
用户需要发送一个 POST 请求才能删除房源(第3行)。我们将提供一个选项,让用户选择是否删除该房源。如果用户点击删除按钮,将触发一个 POST 请求,从而删除指定的房源(第4行)。
删除房源的模板
创建页面的最后一项是编写其模板。对于“删除房源”页面,我们在模板文件夹中创建一个名为 delete_listing.html 的模板,并添加以下代码。
1{% extends "listings/base.html" %} 2 3{% block content %} 4<div class="main"> 5 <form method="POST"> 6 <div class="container"> 7 <!-- Django的安全令牌 --> 8 {% csrf_token %} 9 <h3>您确定要删除房源 <b>{{listing.title}}</b> 吗?</h3> 10 <p><input type="submit" class="btn" value="删除" /> 11 <a class="btn" href="{% url 'listings:my_listings' %}">取消</a></p> 12 </div> 13 </form> 14</div> 15 16{% endblock content %}
在此模板中,可以看到 method 参数为 POST(第5行),因为我们正在发起一个删除房源的请求。我们会显示一条提示信息,引导用户进行选择。如果用户点击“删除”,该房源将被删除;而“取消”按钮则会将用户重定向回“我的房源”页面。