2012-06-05 1 views
0

У меня проблема с Django MPTT с помощью django.contrib.auth.view.login View,Джанго MPTT завершаться auth.view.login View

В urls.py есть

(r'^accounts/login/$', django.contrib.auth.view.login), 

и моя регистрация шаблон/login.html расширяет базовый шаблон-login.html:

{% extends "base.html" %} 

Теперь я использую MPTT в base.html, как это:

{% load mptt_tags %}  
      <ul> 
      {% recursetree nodes %} 
      <li> 
       <a href="{% url someview node.id %}">{{ node.name }}</a> 
       {% if not node.is_leaf_node %} 
        <ul> 
         {{ children }} 
        </ul> 
       {% endif %} 
      </li> 
     {% endrecursetree %} 

Однако, когда доступ к счетам/Войти Джанго жалуется:

TemplateSyntaxError at /accounts/login/ 

Caught VariableDoesNotExist while rendering: Failed lookup for key [nodes] in u"[{} 

Template error 

In template /home/user/djcode/project/templates/base.html, error at line 58 

А на линии 58 на самом деле этот код {% recursetree nodes %}

Я не знаю, как я могу исправить this.I нет проблема с моими другими представлениями, только этот общий. Однако в других представлениях я также отправляю данные для навигации в словаре, в шаблон, но не знаю, как это сделать с общими представлениями. Все предложения?

ответ

0

Вы должны использовать context processor, чтобы отправить дерево навигации ко всем представлениям, включая общие, а не передавать их вручную с каждого вида.

+0

Спасибо! Очень ценю подсказку, просто написал свой первый процессор контекста, и он отлично работает. Еще раз спасибо. – Zed

+0

У меня есть еще один вопрос об этом материале для контекстного процессора. Однако после написания этого процессора все стало лучше, поэтому, на мой взгляд, мне нужно написать в качестве третьего аргумента context_instance = RequestContext (request) для render_to_response(), если я уже добавлен django.core.context_processors.request в TEMPLATE_CONTEXT_PROCESSORS tuple? – Zed

+0

'RequestContext' - это то, что запускает контекстные процессоры в первую очередь - стандартный' render_to_response' не делает этого. Однако вместо этого вы можете использовать новый ['render' shortcut] (https://docs.djangoproject.com/en/1.4/topics/http/shortcuts/#render), который использует RequestContext внутри. –

Смежные вопросы