Django.urls.exceptions.NoReverseMatch: Не найден обратный запрос для 'index' с аргументами '(5,)'. Проверено 1 шаблон(ы): ['index/\\\Z'].
Проблема Django
views.py
def likes_up(request,post_id):
post = get_object_or_404(Post, id=request.POST.get('post_id'))
if post.like.filter(id=request.user.id).exists():
post.like.remove(request.user)
else:
post.like.add(request.user)
return HttpResponseRedirect(reverse('index', args=[post_id]))`
models.py
class Post(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE)
post = models.CharField(max_length=500,null=True,blank=True)
timestamp = models.DateField(auto_now_add=True)
like = models.ManyToManyField(User,blank=True,related_name="liked_user")
def number_of_likes(self):
return self.like.count()`
index.html
{% if user.is_authenticated %}
<form action="{% url 'like-post' pst.id%}" method="POST">
{% csrf_token %}
{% if post_is_liked %}
<button type="submit" name="post_id" value="{{pst.id}}" class="btn btn-info">Unlike</button>
{% else %}
<button type="submit" name="post_id" value="{{pst.id}}" class="btn btn-info">Like</button>
{% endif %}
</form>
{% endif %}
<strong class="text-secondary">{{ number_of_likes }} Like{{ number_of_likes|pluralize }}</strong>`
Я пытаюсь сделать кнопку "нравится" и "не нравится" и хочу показать на странице, скольким пользователям понравилось сообщение?
Но я получил эту ошибку: Как я могу решить эту проблему?
Внутренняя ошибка сервера: /like/5 Traceback (последний последний вызов): File "C:\Users\OSMAN MERT\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\handlers\exception.py", line 55, in inner response = get_response(request) Файл "C:\Users\OSMAN MERT\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\handlers\base.py", строка 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) Файл "C:\Users\OSMAN MERT\Desktop\env\blogs\mysite\blog\views.py", строка 102, in likes_up return HttpResponseRedirect(reverse('index', args=[post_id])) Файл "C:\Users\OSMAN MERT\AppData\Local\Programs\Python\Python310\lib\site-packages\django\urls\base.py", строка 88, в reverse return resolver._reverse_with_prefix(view, prefix, *args, **kwargs) Файл "C:\Users\OSMAN MERT\AppData\Local\Programs\Python\Python310\lib\site-packages\django\urls\resolvers.py", строка 802, в _reverse_with_prefix raise NoReverseMatch(msg) django.urls.exceptions.NoReverseMatch: Обратный запрос для 'index' с аргументами '(5,)' не найден. 1 pattern(s) tried: ['index/\Z']
Вы пытаетесь вернуть представление index
с аргументом:
return HttpResponseRedirect(reverse('index', args=[post_id]))
Но в вашем представлении urls index
не принимает никаких параметров:
path("index/", views.index, name="index")
Вам нужно быть конкретными и реализовать reverse
именно то, что вы задумали.