Django URL с несколькими параметрами - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь передать URL с несколькими параметрами, но я получаю сообщение об ошибке NoReverseMatch. Я попытался распечатать параметры, и они напечатаны правильно. Однако я все еще получаю сообщение об ошибке.

Мой взгляд:

@login_required
def comment_like(request,guid_url,id):
    data = dict()
    comment = get_object_or_404(Comment, id=id)
    user = request.user
    if request.method == 'POST':    
        if comment.likes.filter(id=user.id).exists():
            comment.likes.remove(user)
        else:
            comment.likes.add(user)
        data['comment'] = render_to_string('home/posts/comment_like.html',{'comment':comment},request=request)
        return JsonResponse(data)

моя ссылка:

action="{% url 'home:comment-like' post.guid_url comment.id %}"

и мой URL:

path('post/<str:guid_url>/comment/<int:id>/like/', views.comment_like, name='comment-like'),

Ошибка, которую я получаю:

django.urls.exceptions.NoReverseMatch: Reverse for 'comment-like' with arguments '('', 20)' not found. 1 pattern(s) tried: ['home/post/(?P<guid_url>[^/]+)/comment/(?P<id>[0-9]+)/like/$']

Спасибо за всю помощь заранее!

Ответы [ 3 ]

0 голосов
/ 30 апреля 2020

NoReverseMatch - это исключение Django, которое возникает, когда URL не может быть сопоставлен ни с какой строкой или с обычным express в вашей конфигурации URL. Пожалуйста, убедитесь, что URL-адреса правильно совпадают или нет.

0 голосов
/ 30 апреля 2020

У вас есть ошибка в вашем шаблоне. post.guid_url пусто, как предполагает следующая часть вашей ошибки:

с аргументами '(' ', 20)'

0 голосов
/ 30 апреля 2020

префикс вашего пути с 'home /'.

...