Мой собственный тег шаблона в переменных шаблона рендеринга Django в виде строки

Использование тега -
{% for x in posts %}
{% render_con_form for shastra x.id %}

Вместо того, чтобы передать значение x.id, которое было бы целым числом, передается - 'x.id' как есть.
Как я могу это исправить?

Редактировать -

def render(self, context):
    if self.app == 'broadcast' or self.app == 'shastra':
        form = CommentsForm()   
    str = render_to_string('comments/form.html', {'form' : form, 'app' : self.app, 'id' : self.id})
    return str

def __init__(self, app, id):
self.app = str(app)
self.id = Variable(id)


person Zach    schedule 17.05.2011    source источник


Ответы (1)


попробуйте использовать решение принятого ответа ниже:

Django-Template: получение переменных в блоке тегов!

Внутри вашего тега шаблона

// obj is x.id
def __init__(self, obj):
    from django.template import Variable
    // get the variable value
    self.id = Variable(obj)

def render(self, context):
    id = self.id.resolve(context)
person BFil    schedule 17.05.2011
comment
Эй, посмотри на мое редактирование, оно все еще не работает, мне нужно что-то делать и с функцией рендеринга? - person Zach; 17.05.2011
comment
Перехвачено VariableDoesNotExist при рендеринге: не удалось найти ключ [x] в u'x.id' - это ошибка - person Zach; 17.05.2011
comment
Эй, теперь при отправке моей формы я получаю ошибку CSRF, кажется, что контекст пользовательского тега переопределяет контекст главной страницы. - person Zach; 17.05.2011
comment
это не должно быть связано, внутри тега шаблона вам нужно будет разрешить контекстную переменную 'csrf_token' с помощью Variable.resolve(), а затем включить ‹input type=hidden› со своим значением.. - person BFil; 17.05.2011