Изменение расширяет страницу в Django - PullRequest
0 голосов
/ 24 января 2011

Можем ли мы передать имя страницы тегу extends в django

, то есть я хочу сделать что-то вроде

EDIT

 if(login):

     return render_to_response('/p_change/',

context_instance = RequestContext (request, {'page': 'newpage.html'}))

else:
    return render_to_response('/p_h/',

context_instance = RequestContext (request, {'page': 'newpage1.html'}))

 {% extends page %}

Ответы [ 2 ]

4 голосов
/ 24 января 2011

Можно передать переменную extends. Из книги Джанго :

В большинстве случаев аргумент {% extends%} будет строкой, но это также может быть переменной, если вы не знать имя родительского шаблона до времени выполнения. Это позволяет вам сделать некоторые классные, динамичные вещи.

Однако учтите, что здесь есть предостережение!

Если вы используете {% extends%} в шаблон, он должен быть первым тег шаблона в этом шаблоне. В противном случае наследование шаблонов не будет работа.

Это означает, что вам придется разместить логику выбора страницы в ваших представлениях (а не в вашем шаблоне, как это будет до тега extend, следовательно, лишить законной силы наследование шаблона) и передать переменную в вашем контексте. См. этот ответ для получения более подробной информации.

Обновление

В вашем обновленном вопросе ваш код почти готов, за исключением того, что первый аргумент render_to_response должен быть именем файла шаблона, а не каталогом.

Я бы переписал то, что у вас есть:

if login: 
    sub_page = '/p_change/newpage.html'
else:
    sub_page = '/p_h/newpage1.html'

# 'base.html' being the base template containing {% extends page %}
return render_to_response('base.html', context_instance=RequestContext(request, {
    'page' : sub_page,
}))

Конечно, я просто размышляю о том, чего вы пытаетесь достичь, и вполне может ошибаться.

0 голосов
/ 24 января 2011

Вы можете передать переменную extends, если это то, что вы спрашиваете.

{% extends page %}
...