LINUX.ORG.RU

[python][cherrypy] не работает диспатчер.

 


0

2

Пишу свой paste сервис, на основе python3, cherrypy и postgresql. И использую кастомный диспатчер, однако из-за непонятных мне проблем он не ищет пути. А точнее он почему-то ищет /some/dummy.html вместо /some/

Поскольку это не один файл, и не кусок кода, прикрепляю весь небольшой проект Я в питоне новичок, поэтому код может быть ужасен.

В архиве также лог ошибки.

http://rghost.net/13551151

★★★★★
    @property
    def database(self):
        return self._database

    @database.setter
    def database(self, database):
        self._database = database

    @property
    def view(self):
        return self._view

    @view.setter
    def view(self, view):
        self._view = view

Бессмысленно.

baverman ★★★
()
Ответ на: комментарий от baverman

я это увидел в книге Марка Саммерфилда «Программирование на Python 3: подробное руководство»

XVilka ★★★★★
() автор топика

использую кастомный диспатчер

Зачем? И вообще по коду слишком много велосипедов вкорячено.

baverman ★★★
()
Ответ на: комментарий от XVilka

я это увидел в книге Марка Саммерфилда

Чем он это мотивирует? Можешь назвать три причины в пользу тривиальных сеттеров/геттеров на *питоне*?

baverman ★★★
()
class RegexDispatcher(xdispatch.XDispatcher):

    def __init__(self, app):
        self.app = app
        index = xdispatch.XLocation(r'/$', 'Home', XPaste.paste(app))
        paste_view = xdispatch.XLocation(r'/paste$', 'Paste', XPaste.paste(app))
        show_view = xdispatch.XLocation(r'/show/[\d+]$', 'Show record', XPaste.show_record(app))
        list_view = xdispatch.XLocation(r'/list/$', 'List records', XPaste.show_list(app))

Меня дюже смущают подвешенные index, paste_view, show_view, list_view.

baverman ★★★
()
Ответ на: комментарий от baverman
class RegexDispatcher(xdispatch.XDispatcher):

    def __init__(self, app):
        self.app = app
        self.app.index = xdispatch.XLocation(r'/$', 'Home', app.paste)
        self.app.paste_view = xdispatch.XLocation(r'/paste$', 'Paste', app.paste)
        app.show_view = xdispatch.XLocation(r'/show/[\d+]$', 'Show record', app.show_record)
        app.list_view = xdispatch.XLocation(r'/list/$', 'List records', app.show_list)

попровал так - не работает все равно - «path not found» ни для / и /paste, ни для /show и /list

По поводу сеттеров - в книге пишется что так делать необходимо, чтобы можно было обращаться к функциям, как к свойствам.

XVilka ★★★★★
() автор топика
Ответ на: комментарий от XVilka

попровал так - не работает все равно

Совет: воспользуйся всё-таки встроенным диспатчером, а не текущим полнейшим ахтунгом. Более помочь ничем не могу, чтобы нарыть источник проблемы, нужно твою беду запускать, а этого делать не хочу.

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

А теперь внимательно посмотри на свой код и задайся вопросом — нужны ли тебе функции, чтобы к ним обращаться, как к свойствам?

baverman ★★★
()
Ответ на: комментарий от baverman

Встроенный диспатчер не очень. Он очень ограничен по функциональности. А этот полнейший ахтунгу - это не я писал, нашел в интернете, но он был под python2, я его поправил под 3-й.

XVilka ★★★★★
() автор топика
Ответ на: комментарий от baverman

регекспов. Встроенный их не умеет. Если скажешь альтернативу - буду рад попробовать.

XVilka ★★★★★
() автор топика
Ответ на: комментарий от XVilka

регекспов.

Прошу прощения. Я был сбит с толку неработающим примером с регэкспами в документации. Углубленное чтение и примеры повергли в уныние. Думаю, что окромя сервинга wsgi приложений, cherrypy ни на что не годен. Как web-фреймворк это полный здец, даже werkzeug предоставляет намного более высокоуровневый функционал.

Предлагаю бежать на другой микрофреймворк, ибо помимо роутинга будет еще ворох проблем (нострадамус-mode).

P.S. И он не питоник. Вообще ни разу, какое-то жобоподобное гуано.

baverman ★★★
()
Ответ на: комментарий от baverman

странно. Они позиционируют себя как питоник. А что посоветуешь? Их много новых появилось, а документации и отзывов мало.

XVilka ★★★★★
() автор топика
Ответ на: комментарий от baverman

Спасибо! Начал изучать его, он - божественен, после вишнёвого пирога!

XVilka ★★★★★
() автор топика
Ответ на: комментарий от urlin

Routes

Глупая калька с рельсовых рутов. Controller? Action? Буэ.

baverman ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.