Ошибка при использовании перенаправления в пилонах - PullRequest
3 голосов
/ 19 июля 2010

Использование пилонов версии 1.0: Работа над примером FormDemo из книги Pylons:

http://pylonsbook.com/en/1.1/working-with-forms-and-validators.html

Мой контроллер имеет следующие функции:

class FormtestController(BaseController):

    def form(self):
        return render('/simpleform.html')

    def submit(self):
        # Code to perform some action based on the form data
        # ...
        h.redirect_to(controller='formtest', action='result')

    def result(self):
        return 'Your data was successfully submitted.'

Сначала я заметил, что в книге автор указывает на импорт redirect_, при котором вы выполняете следующий импорт:

from pylons.controllers.util import redirect_to

Это кажется неправильным, поскольку redirect_to находится в модуле маршрутов, поэтому я изменил его на:

from routes import redirect_to

все работает нормально, ошибки импорта больше нет, но когда я выполняю отправку формы, я вижу следующую трассировку


h.redirect_to(controller='formtest', action='result')
target = url_for(*args, **kargs)
encoding = config.mapper.encoding
return getattr(self.__shared_state, name)
AttributeError: 'thread._local' object has no attribute 'mapper'

Кто-нибудь может мне помочь?

1 Ответ

6 голосов
/ 19 июля 2010

Попробуйте:

from pylons import url
from pylons.controllers.util import redirect

# ...
redirect(url(controller='formtest', action='result'))

Возможно, вам лучше использовать текущую документацию Pylons 1.0 и учебник QuickWiki , обновленный для 1.0, а также другие ссылки на сайте.

...