Чтобы закончить работу с приложением списков, мы создадим страницу, на которой пользователи смогут удалять свои списки.
Удалить URL-адрес листинга
Откройте urls.py
и добавьте путь на страницу удаления списка.
#listings/urls.py
from django.urls import path from .import views app_name = 'listings' urlpatterns = [ path(' ', views.index, name='index'), path('all_listings/', views.all_listings, name='all_listings'), path('new_listing/', views.new_listing, name='new_listing'), path('all_listings/<detail_id>/', views.detail, name='detail'), path('my_listings/', views.my_listings, name='my_listings'), path('edit_listing/<edit_id>/', views.edit_listing, name='edit_listing'), path('delete_listing/<delete_id>/', views.delete_listing, name='delete_listing'), ]
Удалить просмотр списка
Откройте views.py
и создайте представление для страницы удаления списка.
#listings/views.py
from django.shortcuts import render, redirect from .forms import ListingForm from .models import Listings
...
def delete_listing(request, delete_id): listing = Listings.objects.get(id=delete_id)
if request.method == 'POST': listing.delete() return redirect('listings:my_listings')
context = {'listing': listing} return render(request, 'listings/delete_listing.html', context)
Мы даем пользователям возможность выбирать, хотят они удалить листинг или нет. Пользователям нужно будет сделать запрос POST, чтобы удалить листинг.
Удалить шаблон листинга
Создайте шаблон с именем delete_listing.html
в папке шаблонов и добавьте следующий код.
PROJECT
└── example
├── listings
│ ├── migrations
│ ├── templates/listings
│ │ ├── index.html
│ │ ├── all_listings.html
│ │ ├── new_listing.html
│ │ ├── detail.html
│ │ ├── my_listings.html
│ │ ├── edit_listing.html
│ │ └── delete_listing.html
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── venv
└── manage.py
Удалить файл шаблона листинга
#listings/templates/listings/delete_listing.html
{% extends "listings/base.html" %}
{% block content %} <div class="main"> <form method="POST"> <div class="container"> {% csrf_token %} <h3>Do you want to delete <b>{{listing.title}}</b> listing ?</h3> <p> <input type="submit" class="btn" value="Delete" /> <a class= "btn" href="{% url 'listings:my_listings'%}">Cancel </a> </p> </div> </form> </div>
{% endblock content %}
Мы отображаем сообщение, которое предложит пользователям выбрать один из двух вариантов. Если пользователи нажмут «Удалить», список будет удален. С другой стороны, «Отмена» перенаправляет пользователей на страницу с моими объявлениями.
Мои объявления — Удалить
Откройте my_listings.html
и активируйте кнопку удаления.
#listings/templates/listings/my_listings.html
{% extends "listings/base.html" %}
{% block content %} <h2>MY LISTINGS:</h2>
<div class="row"> <div class="col"> <div class="card"> <table class="table"> <tr> <th>Product</th> <th>Date Listed</th> <th></th> <th></th> <th></th> </tr>
{% for my_listing in my_listings %}
<tr> <td>{{ my_listing.title }}</td> <td>{{ my_listing.list_date }}</td> <td><a class="btn" href="{% url 'listings:detail' my_listing.id %}">View </a></td> <td><a class="btn" href="{% url 'listings:edit_listing' my_listing.id %}">Edit </a></td> <td><a class="btn" href="{% url 'listings:delete_listing' my_listing.id %}">Delete </a></td> </tr>
{% endfor %}
</table> <div class="container"> <a class="btn" href="{% url 'listings:new_listing'%}">New Listing </a> </div> </div> </div> </div>
{% endblock content %}
Сохраните изменения и введите команду python manage.py runserver
.
Перейдите на страницу моих объявлений и попробуйте удалить объявление.
Вы должны увидеть сообщение с предложением выбрать, хотите ли вы удалить листинг или нет.
Когда вы удаляете объявление, оно исчезает как со страницы объявлений, так и со страницы моих объявлений.
Функция удаления дополняет все основные функции приложения списков. Тем не менее, всегда есть возможности для улучшения, поэтому не стесняйтесь добавлять в приложение дополнительные функции, если хотите.
В следующей главе мы отойдем от приложения списков и создадим приложение для пользователей, чтобы другие пользователи могли зарегистрироваться и использовать веб-сайт для создания списков.
Если вам нравится сериал, следите за мной в Twitter и на Youtube, чтобы узнать больше.
Youtube: Брайам Лоайза
Твиттер: balt1794