progammist29 апреля 2020 г. 13:30
Не могу получить ID статьи/поста
Вопрос такой, пытаюсь сделать "Добавить статью в избранное" без ajax. В чем проблема, не могу получить ID статьи . Вот что имеем:
models.py
class Post(models.Model): #модель статьи title = models.CharField(max_length=200, unique=True, verbose_name=u'Заголовок поста', db_index=True ) slug = models.SlugField(max_length=200, unique=True) favourite = models.ManyToManyField(User, related_name='favourtie', blank=True) def __str__(self): return self.title
views.py
def post_detail (request, slug): #вьюха вывода статьи template_name = 'post_detail.html' post = get_object_or_404(Post, slug=slug) is_favourite = False # переменная для добавления статьи в избранное if post.favourite.filter (id=request.user.id).exists(): is_favourite = True return render(request, template_name, {'post': post, 'is_favourite': is_favourite,}) #Функция добавления статьи в избранное def favourite_post(request, id): post = get_object_or_404(Post, id=id) if post.favourite.filter(id=request.user.id).exists(): post.favourite.remove(request.user) else: post.favourite.add(request.user) return HttpResponseRedirect(post.get_absolute_url())
urls.py
urlpatterns = [ path('<slug:slug>/', views.post_detail, name='post_detail') #вывод статьи, path ('favourite_post', views.favourite_post, name="favourite_post") #Добавление в избранное, ]
В шаблоне вывожу ссылку на статью:
<h2><a href="{% url 'post_detail' post.slug %}">{{ post.title }}</a></h2>
Как только пыатюсь добавить кнопку в шаблон-статью "Добавить в избранное":
{% if is_favourite %} <a href="{% url 'favourite_post' id=post.id %}"> <i class="fas fa-heart"></i> </a> {% else %} <a href="{% url 'favourite_post' id=post.id %}"> <i class="far fa-heart"></i> </a> {% endif %}
Получаю ошибку при переходе по урл статьи:
NoReverseMatch at /novayastatya/
Reverse for 'favourite_post' with keyword arguments '{'id': 57}' not found. 1 pattern(s) tried: ['favourite_post$']
Нид хелп
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
Пожалуйста, авторизуйтесь или зарегистрируйтесь
SH
- Sak Hax
- 25 апреля 2024 г. 21:00
C++ - Тест 001. Первая программа и типы данных
- Результат:33баллов,
- Очки рейтинга-10
l
- laei
- 23 апреля 2024 г. 16:19
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:10баллов,
- Очки рейтинга-10
Последние комментарии
Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
АК
Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Анатолий Кононенко5 февраля 2024 г. 9:50
EVA25 декабря 2023 г. 18:30
Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
Сейчас обсуждают на форуме
DA
Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
Dr Gangil Academics20 апреля 2024 г. 14:45
Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
Павел Дорофеев14 апреля 2024 г. 9:35
Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…
У вас нет идентификатора ID в URL - следовательно он не знает, куда подставлять id в шаблоне
ну и лично я считаю, что правильнее было бы хранить в юзере связь с постами - как-то логичнее
можно было бы сделать так:
Читается так:
Пользователь добавляет пост в избранное, а не Пост в избранное добавляет пользователя
Спасибо за отклик,
попробовал изменить url, получил ошибку:
Если изменить слово path , на url в начале:
То ошибка вроде пропадает, но при клике на статью:
Может быть надо как-то изменить ссылку на статью?
Статьи вывожу так:
Урл получается localhost/novayastatya
вообще так должен записываться url для path
сначала тип, а потом его имя
точно. а я писал по памяти с телефона:(