Почему мой вид удаления на основе классов не работает? - PullRequest
0 голосов
/ 26 июня 2019

Мой просмотр удаления не работает, и сообщение об ошибке: Страница не найдена (404) Метод запроса: GET.

Я пытаюсь удалить загруженный файл, основываясь на его первичном ключе, и до сих пор мой URL-адрес может правильно связать меня на основе pk.

Это мой urls.py:

path('post/<int:post_id>/lesson_delete/<int:lesson_id>', LessonDeleteView.as_view(), name='lesson_delete'),

Мои views.py:

class LessonDeleteView(DeleteView):
model = Lesson
success_url = '../'
template_name = 'lesson_confirm_delete.html'

Это HTML-шаблон, который приводит пользователя к представлению удаления:

{% extends "store/base.html" %}
{% block content %}
<div id="main">
    <table class="table mb-0">
    <thead>
      <tr>          
        <th>Title</th>
        <th>Author</th>
        <th>Download</th>
        <th>Delete</th>
      </tr>
    </thead>
    <tbody>
      {% for l in Lesson %}
      <tr>
        <td>
            {% if l.file %}
                {{ l.title }}
            {% else %}                  
            <h6>Not available</h6>
            {% endif %}
        </td>
        <td>{{ l.post.author }}</td>
        <td>{% if l.file %}                 
            <a href="{{ l.file.url }}" class="btn btn-primary btn-sm" target="_blank">Download</a>
            {% else %}
            <h6>Not available</h6>
            {% endif %}    
        </td>
        <td> <a class="btn btn-danger btn-sm mt-1 mb-1" href="{% url 'lesson_delete' lesson_id=l.id %}">Delete</a>
        </td>
      </tr>
      {% endfor %}
    </tbody>
  </table>
</div>
{% endblock %}

Это мой HTML-шаблон для DeleteView:

{% extends "store/base.html" %}
{% block content %}
<div class="content-section" id="main">
<form method="POST">
    {% csrf_token %}
    <fieldset class="form-group">
        <legend class="border-bottom mb-4">Delete Lesson</legend>  
        <h2>Are you sure you want to delete the post "{{object.title}}"? 
</h2>              
    </fieldset>
    <span style="display:inline;">
            <button class="btn btn-outline-danger" type="submit">Yes, Delete! 
    </button>
        <a class="btn btn-outline-secondary" href ="">Cancel</a>
    </span>
</form>        
</div>
    {% endblock content %}

Это моя модель урока:

class Lesson(models.Model):
    title = models.CharField(max_length=100)
    file = models.FileField(upload_to="lesson/pdf")
    date_posted = models.DateTimeField(default=timezone.now)
    post = models.ForeignKey(Post, on_delete=models.CASCADE, null=False, blank=False)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('lesson_upload', kwargs={'pk': self.pk})

1 Ответ

0 голосов
/ 26 июня 2019

Ваш шаблон называется "lesson_confirm_delete.html"?Кроме того, для вашего успеха URL, я чувствую, что у вас нет пути "../".Это должен быть конкретный путь, по которому вы хотите перейти.

(Извините, я пока не могу комментировать.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...