Моят етикет за персонализиран шаблон в 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