Я пишу блог с помощью django, и внизу записи в блоге я хочу отобразить 5 последних записей относительно тегов, которые я прикрепил с помощью django-taggit.
Итак, я решил, что мне нужно передать текущую запись в блоге (тот, который мы просматриваем) в тег шаблона, который будет извлекать записи с теми же тегами taggit или достаточно близко. Но давайте начнем с простого и скажем, извлекаем записи, которые разделяют первый taggit-tag.
вот что я придумал:
from django.template import Library, Node
from django import template
from blog.models import Entry
register = Library()
class RecentContentNode(Node):
def __init__(self, num, object, varname):
self.object = template.Variable(object)
self.num, self.varname = num, varname
def render(self, context):
object = self.object.resolve(context)
tag_list = object.tags.all()
tag_names = tag_list[0].name
context[self.varname] = Entry.objects.filter(tags__name__in=[tag_names])[:self.num]
return ''
@register.tag
def get_recent_related(parser, token):
bits = token.contents.split()
if len(bits) != 5:
raise TemplateSyntaxError, "get_latest_entries tag takes exactly four arguments"
if bits[3] != 'as':
raise TemplateSyntaxError, "fourth argument to the get_recent tag must be 'as'"
return RecentContentNode(bits[1], bits[2], bits[4])
Но это ничего не делает. Проходя через него с оператором печати, я вижу, что он попадает в RecentContentNode через инициализацию, но не в метод рендеринга. Я не получаю никаких ошибок или предупреждений, поэтому я не знаю, что происходит. Но я думаю, что проблема заключается в переменной / разрешении, так как я вижу других людей в сети, имеющих аналогичные проблемы, но они часто отвечают на сообщение, говоря, что они исправили это, но не как, поэтому я не мудрее.
Что-то очевидное я пропустил? или есть способ лучше..