Получение отфильтрованных объектов из URL путем передачи правильных атрибутов - PullRequest
0 голосов
/ 02 июля 2019

У меня есть приложение Django с постами и комментариями с комментариями, связанными с постами с внешними ключами.Я не могу получить комментарии к определенному сообщению.

Я проверил свою БД, чтобы убедиться, что внешний ключ добавляется правильно, и это так.Я несколько раз пытался изменить имя атрибута безрезультатно.

Мой HTML-код в шаблоне публикации подробностей для кнопки получения всех комментариев выглядит следующим образом:

<a class="btn btn-outline-info mb-4" href="{url 'user-comments' object.id}">View Answers</a>

Мой views.py выглядит такэто:

class PostCommentListView(ListView):
    model = Comment
    template_name = 'blog/comment.html'
    context_object_name = 'comments'
    ordering = ['-comment_date']
    paginate_by = 7

    def get_queryset(self):
        post = get_object_or_404(Comment, post_id=self.kwargs.get('post_id'))
        return Comment.objects.filter(post=post).order_by('-comment_date')

, а URL 'user-comments' выглядит следующим образом:

path('post/<int:post_id>', PostCommentListView.as_view(), name='user-comments')

Я получаю сообщение о том, что страница не найдена.

Request URL:    http://127.0.0.1:8000/post/15/%7Burl%20'user-comments'%20object.id%7D

The current path, post/15/{url 'user-comments' object.id}, didn't match any of these.

Ответы [ 3 ]

0 голосов
/ 02 июля 2019

В шаблонах Django url следует вызывать внутри {% %} тегов.

<a href="{% url 'user-comments' object.id %}">View Answers</a>
0 голосов
/ 02 июля 2019

Ваш URL-адрес также должен иметь идентификатор сообщения, в котором будут отображаться комментарии к одному конкретному сообщению.

class PostCommentListView(ListView):
    model = Comment
    template_name = 'blog/comment.html'
    context_object_name = 'comments'
    ordering = ['-comment_date']
    paginate_by = 7

    def get_queryset(self):
        qs = super(PostCommentListView, self).get_queryset()
        post = get_object_or_404(Post, id=self.kwargs['post_id'])
        qs = qs.filter(post=post)
        return qs


## Then, in urls.py you should have your url path like this
path('posts/<int:post_id>/comments', views.PostCommentListView.as_view(),
         name='user-comments'),

В шаблонах Django также следует вызывать url внутри тегов {% %}.

<a class="btn btn-outline-info mb-4" href="{% url 'user-comments' object.id %}">View Answers</a>
0 голосов
/ 02 июля 2019

У вас есть синтаксическая ошибка на html-странице.

<a class="btn btn-outline-info mb-4" href="{url 'user-comments' object.id}">View Answers</a>

Это должно быть записано как:

<a class="btn btn-outline-info mb-4" href="{% url 'user-comments' object.id %}">View Answers</a>

Пожалуйста, убедитесь, что вы правильно сохранили синтаксис в своих кодах.

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