2010-01-12 5 views
1

У меня была установка Pylons v0.9.7, и был создан проект с использованием genshi. Я пытался кодировать простой тестовый пример, но он не работает.Pylons "global name 'c' не определен"

код: member.py

coding: utf-8 
import logging import foo.model 

from foo.lib.base import * 

log = logging.getLogger(__name__) 

class MemberController(BaseController): 

    def index(self): 
     c.title="title" 
     c.mes="message" 
     return render('test.html') 

код: test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns:py="http://genshi.edgewall.org/" 
     lang="ja"> 
    <head> 
     <title>${c.title}</title> 
    </head> 
<body> 
    <p>${c.mes}</p> 
</body> 
</html> 

и сообщение об ошибке (на журнал)

Error - <type 'exceptions.NameError'>: global name 'c' is not defined 

Пожалуйста, помогите мне найти ошибку.

ответ

3
c.title="title" 

требуется указать имя c (глобально или локально). Вы никогда не определяете ничего с именем c.

Итак, определите подходящее имя c (где можно установить атрибут title!), Прежде чем назначать что-либо c.title!

Следующая подсказка: from pylons import tmpl_context as c - вы не сделать что from ... import ... as, ты сейчас -)

+1

Давать свет за подсказку?. У меня есть ваша книга (python CookBook)! Для меня большая честь. В дальнейшем он снова пытается. – Schaft

+0

Ahhh! это сработало! спасибо Алекс! Я понимаю, что «C был tmpl_context». Я желаю искренне выразить нашу благодарность. – Schaft