NoReverseMatch при добавлении раздела комментариев в Django ⇐ Python
NoReverseMatch при добавлении раздела комментариев в Django
Я пытаюсь добавить комментарии в свой блог, но у меня возникает ошибка, и я не могу понять, почему.
Ошибка:
NoReverseMatch в /2024/01/01/lesson-1/ Обратное для «post_comment» с аргументами «('',)» не найдено. Опробовано 1 шаблон(ы): ['(?P[0-9]+)/(?P[0-9]+)/(?P[0-9]+) /(?P[-a-zA-Z0-9_]+)/комментарий/\\Z'] с подсветкой:
url.py
urlpatterns = [ ... path('////',views.lesson_detail, name='lesson_detail'), path('////comment/',views.post_comment, name='post_comment'), ...] forms.py
класс CommentForm(forms.ModelForm): класс Мета: модель = Комментарий поля = ['имя', 'электронная почта', 'тело'] models.py
Урок класса(models.Model): Статус класса (models.TextChoices): ЧЕРНОВИК = 'DF', 'Черновик' ПУБЛИКИРОВАНО = 'ПБ', 'Опубликовано' title = models.CharField(max_length=250) slug = models.SlugField(max_length=250, unique_for_date='publish') автор = models.ForeignKey(Пользователь, on_delete=models.CASCADE, linked_name='blog_posts') тело = модели.TextField() теги = Менеджер тегов() публикация = models.DateTimeField(default=timezone.now) создано = models.DateTimeField(auto_now_add=True) обновлено = models.DateTimeField(auto_now=True) статус = models.CharField(max_length=2, choice=Status.choices, default=Status.DRAFT) объекты = модели.Менеджер() опубликовано = ОпубликованныйМенеджер() класс Мета: заказ = ['-публиковать'] индексы = [ модели.Index(fields=['-publish']), ] защита __str__(сам): вернуть себе.заголовок защита get_absolute_url(self): returnverse('lang_learning_app:lesson_detail', args=[self.publish.year, self.publish.month, self.publish.day, self.slug]) Комментарий класса (модели.Модель): сообщение = модели.ForeignKey(Урок, on_delete=models.CASCADE, связанное_имя='комментарии') имя = модели.CharField(max_length=80) электронная почта = модели.EmailField() тело = модели.TextField() создано = models.DateTimeField(auto_now_add=True) обновлено = models.DateTimeField(auto_now=True) активный = models.BooleanField(по умолчанию=True) класс Мета: заказ = ['создано'] индексы = [ модели.Индекс(поля=['создано']), ] защита __str__(сам): return f'Комментарий пользователя {self.name} на {self.post}' views.py
@require_POST Защиту post_comment (запрос, post_id): post = get_object_or_404(Lesson, id=post_id, status=Lesson.Status.PUBLISHED) комментарий = Нет # Комментарий был опубликован форма = CommentForm(данные=request.POST) если form.is_valid(): # Создаем объект Comment, не сохраняя его в базе данных комментарий = form.save(commit=False) # Назначаем публикацию комментарию комментарий.пост = сообщение # Сохраняем комментарий в базу данных комментарий.сохранить() return render(request, 'lessons/comment.html', {'post': post, 'form': form, 'comment': comment}) comment_form.html
Добавить новый комментарий {{ form.as_p }} {% csrf_token %}
lesson_detail.html
{% с comment.count как total_comments %} {{ total_comments }} комментарий{{ total_comments|pluralize }} {% endwith %} {% за комментарий в комментариях %} Комментарий {{ forloop.counter }} от {{ comment.name }} {{ комментарий.создан }}
{{ comment.body|разрывы строк }} {% пустой %}
Комментариев пока нет.
{% конец для %} {% включает "lessons/comment_form.html" %}
Не знаю, почему я получаю эту ошибку, я следовал инструкциям из книги Django на примере. Я внес некоторые коррективы в свой блог, вместо поста использовал урок. Знаете ли вы, почему я получаю эту ошибку?
Заранее спасибо!
Я пытаюсь добавить комментарии в свой блог, но у меня возникает ошибка, и я не могу понять, почему.
Ошибка:
NoReverseMatch в /2024/01/01/lesson-1/ Обратное для «post_comment» с аргументами «('',)» не найдено. Опробовано 1 шаблон(ы): ['(?P[0-9]+)/(?P[0-9]+)/(?P[0-9]+) /(?P[-a-zA-Z0-9_]+)/комментарий/\\Z'] с подсветкой:
url.py
urlpatterns = [ ... path('////',views.lesson_detail, name='lesson_detail'), path('////comment/',views.post_comment, name='post_comment'), ...] forms.py
класс CommentForm(forms.ModelForm): класс Мета: модель = Комментарий поля = ['имя', 'электронная почта', 'тело'] models.py
Урок класса(models.Model): Статус класса (models.TextChoices): ЧЕРНОВИК = 'DF', 'Черновик' ПУБЛИКИРОВАНО = 'ПБ', 'Опубликовано' title = models.CharField(max_length=250) slug = models.SlugField(max_length=250, unique_for_date='publish') автор = models.ForeignKey(Пользователь, on_delete=models.CASCADE, linked_name='blog_posts') тело = модели.TextField() теги = Менеджер тегов() публикация = models.DateTimeField(default=timezone.now) создано = models.DateTimeField(auto_now_add=True) обновлено = models.DateTimeField(auto_now=True) статус = models.CharField(max_length=2, choice=Status.choices, default=Status.DRAFT) объекты = модели.Менеджер() опубликовано = ОпубликованныйМенеджер() класс Мета: заказ = ['-публиковать'] индексы = [ модели.Index(fields=['-publish']), ] защита __str__(сам): вернуть себе.заголовок защита get_absolute_url(self): returnverse('lang_learning_app:lesson_detail', args=[self.publish.year, self.publish.month, self.publish.day, self.slug]) Комментарий класса (модели.Модель): сообщение = модели.ForeignKey(Урок, on_delete=models.CASCADE, связанное_имя='комментарии') имя = модели.CharField(max_length=80) электронная почта = модели.EmailField() тело = модели.TextField() создано = models.DateTimeField(auto_now_add=True) обновлено = models.DateTimeField(auto_now=True) активный = models.BooleanField(по умолчанию=True) класс Мета: заказ = ['создано'] индексы = [ модели.Индекс(поля=['создано']), ] защита __str__(сам): return f'Комментарий пользователя {self.name} на {self.post}' views.py
@require_POST Защиту post_comment (запрос, post_id): post = get_object_or_404(Lesson, id=post_id, status=Lesson.Status.PUBLISHED) комментарий = Нет # Комментарий был опубликован форма = CommentForm(данные=request.POST) если form.is_valid(): # Создаем объект Comment, не сохраняя его в базе данных комментарий = form.save(commit=False) # Назначаем публикацию комментарию комментарий.пост = сообщение # Сохраняем комментарий в базу данных комментарий.сохранить() return render(request, 'lessons/comment.html', {'post': post, 'form': form, 'comment': comment}) comment_form.html
Добавить новый комментарий {{ form.as_p }} {% csrf_token %}
lesson_detail.html
{% с comment.count как total_comments %} {{ total_comments }} комментарий{{ total_comments|pluralize }} {% endwith %} {% за комментарий в комментариях %} Комментарий {{ forloop.counter }} от {{ comment.name }} {{ комментарий.создан }}
{{ comment.body|разрывы строк }} {% пустой %}
Комментариев пока нет.
{% конец для %} {% включает "lessons/comment_form.html" %}
Не знаю, почему я получаю эту ошибку, я следовал инструкциям из книги Django на примере. Я внес некоторые коррективы в свой блог, вместо поста использовал урок. Знаете ли вы, почему я получаю эту ошибку?
Заранее спасибо!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Я получаю ошибку noreversematch при посещении другого URL - Django [дубликат]
Anonymous » » в форуме Python - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ошибка Django NoReverseMatch: как создать URL-адреса для каждой модели
Anonymous » » в форуме Python - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Ошибка Django NoReverseMatch: как создать URL-адреса для каждой модели
Anonymous » » в форуме Python - 0 Ответы
- 28 Просмотры
-
Последнее сообщение Anonymous
-