Найти - Пользователи
Полная версия: Не работают ссылки в сайте на Django.
Начало » Python для новичков » Не работают ссылки в сайте на Django.
1 2
SwanAvs
Делаю комментарии на Django, используя django-comments-xtd

Я прописал get_absolute_url(как прописано в документации по комментариям), чтобы не возникали ошибки, но они возникают, если нажать на кнопку предпросмотра, удаления, ответа на комментарий и т.п. Работает только отправка. Вот пример ошибки:

TemplateDoesNotExist at /comments/reply/5/

models.py:
 class Comment(models.Model):
    title = models.CharField(max_length=30, default="tit")
    def get_absolute_url(self):
        return reverse("comment")

urls:
 path('info', Comment2.as_view(), name='comment'),

views.py:

 class Comment2(TemplateView):
    template_name = "registration/comments.html"
    def get_context_data(self, **kwargs):
        context = super(Comment2, self).get_context_data(**kwargs)
        comment = Comment.objects.get(pk=1)
        context['comment'] = comment
        return context

В чем же ошибка? Правильно ли я прописал get_absolute_url?
Помогите пожалуйста.
FishHook
А при чем тут ссылки то?

SwanAvs
TemplateDoesNotExist
Джанга не может шаблон найти
SwanAvs
FishHook
А при чем тут ссылки то?
Ну как.

К примеру вот эта /comments/reply/ - для ответа
Она вызывает ошибку.

FishHook
Джанга не может шаблон найти
Так ведь шаблоны уже вместе с django-comments-xtd идут.

FishHook
SwanAvs
Ну как.
Ну вот так!
TemplateDoesNotExist
SwanAvs
Она вызывает ошибку.
Она вызывает ошибку потому что Джанга не может найти соответствующий шаблон
SwanAvs
Так ведь шаблоны уже вместе с django-comments-xtd идут.

покажите, код вот этой view

/comments/reply/
SwanAvs
FishHook
покажите, код вот этой view
Его не нужно прописывать это view комментариев.
FishHook
SwanAvs
Его не нужно прописывать это view комментариев.
ну так что там за код вы можете показать?
SwanAvs
FishHook
ну так что там за код вы можете показать?

 def reply(request, cid):
    try:
        comment = XtdComment.objects.get(pk=cid)
        if not comment.allow_thread():
            raise MaxThreadLevelExceededException(comment)
    except MaxThreadLevelExceededException as exc:
        return HttpResponseForbidden(exc)
    except XtdComment.DoesNotExist as exc:
        raise Http404(exc)
    ct_str = "%s.%s" % (comment.content_type.app_label,
                        comment.content_type.model)
    options = get_app_model_options(content_type=ct_str)
    if (
        not request.user.is_authenticated and
        options['who_can_post'] == 'users'
    ):
        path = request.build_absolute_uri()
        resolved_login_url = resolve_url(settings.LOGIN_URL)
        return redirect_to_login(path, resolved_login_url,
                                 REDIRECT_FIELD_NAME)
    form = get_form()(comment.content_object, comment=comment)
    next = request.GET.get("next", reverse("comments-xtd-sent"))
    template_arg = [
        "django_comments_xtd/%s/%s/reply.html" % (
            comment.content_type.app_label,
            comment.content_type.model),
        "django_comments_xtd/%s/reply.html" % (
            comment.content_type.app_label,),
        "django_comments_xtd/reply.html"
    ]
    return render(request, template_arg,
                  {"comment": comment, "form": form, "cid": cid, "next": next})

код здесь
FishHook
Ok, видим список шаблонов
 template_arg = [
        "django_comments_xtd/%s/%s/reply.html" % (
            comment.content_type.app_label,
            comment.content_type.model),
        "django_comments_xtd/%s/reply.html" % (
            comment.content_type.app_label,),
        "django_comments_xtd/reply.html"
    ]
я бы на вашем месте вывел в лог этот список. Потом надо найти, существуют ли соответствующие шаблоны. И правильно ли настроен параметр TEMPLATES
SwanAvs
FishHook
правильно ли настроен параметр TEMPLATES
С ним все в порядке.

FishHook
Потом надо найти, существуют ли соответствующие шаблоны
Вообще, их не нужно создавать(идут вместе с комментариями), но с целью дальнейшего изменения дизайна я их скачал, но это не помогает.

Я бы лучше взглянул на вот это:

 COMMENTS_XTD_APP_MODEL_OPTIONS = {
    'blog.post': { # строка, вызывающая внимание
        'allow_flagging': False,
        'allow_feedback': True,
        'show_feedback': True
    }
}

Это код из документации, позволяющий пользователям отвечать.
Он прописан в моем settings.py. Очевидно 'blog.post' неверен для моего проекта.

Как я понял blog - название приложения( у меня - registration)

А что такое .post?
Полагаю, если изменить эти значения - что-то заработает.

FishHook
Покажите как выглядит оригинальное сообщение об ошибке
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB