Как использовать встроенную структуру комментариев Django в любом шаблоне

Я только начинаю изучать встроенную функцию комментариев Django. сначала я думаю, что шаблон комментария должен хорошо работать на любой странице только с get_comment_form или render_comment_form. Но теперь это действительно раздражает, когда я добавляю этот код на обычную страницу. Это не работает. может быть, другими словами. Я не знаю, как указать объект, к которому нужно прикрепить, когда дело доходит до обычной страницы. Ниже подробное сообщение:

models.py
class Entry(models.Model):
    title = models.CharField(max_length=250)
    body = models.TextField()
    pub_date = models.DateTimeField()
    enable_comments = models.BooleanField()

urls.py
urlpatterns = patterns('',
url(r'^profile/','django.views.generic.simple.direct_to_template',{
        'template' : 'admin_ryu_blog/profile.html'},name='profile'),
)

теперь я просто хочу использовать структуру комментариев в шаблоне profile.html. что я должен делать ? Теперь вы можете рассматривать profile.html как пустую страницу. затем вы можете добавить любой код, который хотите, если вы можете получить форму комментария, отображаемую со встроенной структурой комментариев.

Кстати, я пробовал метод ниже:

{% load comments %}
{% render_comment_form for profile %} 

затем он вызывает сообщение об ошибке. такая же трассировка на мой предыдущий вопрос. нажмите здесь!


person ryu    schedule 25.01.2013    source источник


Ответы (1)


Вы не можете. Фреймворк комментариев ожидает объект для ссылки.

Но простое решение, которое приходит на ум, — это создание модели, которая сопоставляется с URL-адресами следующим образом:

class CommentAnchor(models.Model):
    path = models.CharField(max_length=256)

Создайте контекстный процессор который создает эти объекты и добавляет их ко всему контексту шаблона. Не забудьте добавить процессор контекста в settings.TEMPLATE_CONTEXT_PROCESSORS и не забудьте использовать RequestContext при рендеринге шаблонов.

def CommentAnchorProcessor(request):
    comment_anchor, created = CommentAnchor.objects.get_or_create(path=request.path)
    return {
        'comment_anchor': comment_anchor,  # now, this is available in every template.
    }

Теперь вы можете отображать комментарии с помощью этих новых объектов.

{% render_comment_form for comment_anchor %} 
person Yuji 'Tomita' Tomita    schedule 25.01.2013