Портал Python-программистов : Веб-технологии : Pylons http://www.python.com.ua/forum Портал Python-программистов http://backend.userland.com/rss Веб-технологии :: Pylons :: BaseController dorianhttp://www.python.com.ua/forum/viewtopic.php?pid=8498#p8498 8498@http://www.python.com.ua/forum <p>Итак имеем base.py</p><div class="codebox"><div class="incqbox"><h4>Код::</h4><div class="scrollbox" style="height: 35em"><pre dir="ltr">"""The base Controller API Provides the BaseController class for subclassing, and other objects utilized by Controllers. """ from pylons import c, cache, config, g, request, response, session from pylons.controllers import WSGIController from pylons.controllers.util import abort, etag_cache, redirect_to from pylons.decorators import jsonify, validate from pylons.i18n import _, ungettext, N_ from pylons.templating import render import sbe.lib.helpers as h import sbe.model as model class BaseController(WSGIController): def __call__(self, environ, start_response): """Invoke the Controller""" # WSGIController.__call__ dispatches to the Controller method # the request is routed to. This routing information is # available in environ['pylons.routes_dict'] return WSGIController.__call__(self, environ, start_response) class SbeBaseController(BaseController): def __call__(self, environ, start_response): """Invoke the Controller""" # WSGIController.__call__ dispatches to the Controller method # the request is routed to. This routing information is # available in environ['pylons.routes_dict'] try: return WSGIController.__call__(self, environ, start_response) finally: if (session.has_key('USER') and not session['USER'].a_IsLogged) or not session.has_key('USER'): redirect_to('login') # Include the '_' function in the public names __all__ = [__name for __name in locals().keys() if not __name.startswith('_') \ or __name == '_']</pre></div></div></div><p>Один из контроллеров наследуем от стандартного BaseController login.py</p><div class="codebox"><div class="incqbox"><h4>Код::</h4><div class="scrollbox" style="height: 35em"><pre dir="ltr">#-*- coding: utf-8 -*- import logging from sbe.lib.base import * from pylons.i18n import get_lang, set_lang from sbe.lib import auth log = logging.getLogger(__name__) class LoginController(BaseController): def index(self): c.loginarea_title = _('Login into Administration') c.login_title = _('User Name') c.password_title = _('Password') c.error_message = list() c.submit_btn_value = _('Login') if len(request.POST): if not auth.User().CheckUser(request.POST['login'], request.POST['password']): c.error_message.append(_('Invalid Username or Password.')) else: redirect_to('admin') return render('/auth/auth.mako')</pre></div></div></div><p>Все доугие контроллеры наследуем от SbeBaseController, который редиректит на описный выше контроллер в случае если пользователь не авторизован admin.py</p><div class="codebox"><div class="incqbox"><h4>Код::</h4><div class="scrollbox" style="height: 16.5em"><pre dir="ltr">import logging from sbe.lib.base import * log = logging.getLogger(__name__) class AdminController(SbeBaseController): def index(self): return render('/layouts/main_layout.mako')</pre></div></div></div><p>пытаемся ломануться без авторизации сразу на http://localhost:5000/admin (по задумке должен произойти редирект на login.py) но получаем ошибку:</p><div class="codebox"><div class="incqbox"><h4>Код::</h4><div class="scrollbox" style="height: 35em"><pre dir="ltr">URL: http://localhost:5000/admin Module pylons.error:245 in respond << try: __traceback_supplement__ = Supplement, self, environ app_iter = self.application(environ, detect_start_response) try: return_iter = list(app_iter)>> app_iter = self.application(environ, detect_start_response) Module pylons.wsgiapp:315 in __call__ << def __call__(self, environ, start_response): environ['pylons.environ_config'] = self.econf return self.app(environ, start_response)>> return self.app(environ, start_response) Module beaker.cache:180 in __call__ << environ['paste.registry'].register(self.cache, self.cache_manager) environ[self.environ_key] = self.cache_manager return self.app(environ, start_response)>> return self.app(environ, start_response) Module beaker.session:405 in __call__ << return start_response(status, headers, exc_info) try: response = self.wrap_app(environ, session_start_response) except: ty, val = sys.exc_info()[:2]>> response = self.wrap_app(environ, session_start_response) Module routes.middleware:104 in __call__ << environ['SCRIPT_NAME'] = environ['SCRIPT_NAME'][:-1] response = self.app(environ, start_response) del config.environ del self.mapper.environ>> response = self.app(environ, start_response) Module pylons.wsgiapp:95 in __call__ << controller = self.resolve(environ, start_response) response = self.dispatch(controller, environ, start_response) if 'paste.testing_variables' in environ and hasattr(response,>> response = self.dispatch(controller, environ, start_response) Module pylons.wsgiapp:237 in dispatch << if log_debug: log.debug("Calling controller class with WSGI interface") return controller(environ, start_response) def load_test_env(self, environ):>> return controller(environ, start_response) Module sbe.lib.base:35 in __call__ << return WSGIController.__call__(self, environ, start_response) finally: if (session.has_key('USER') and not session['USER'].a_IsLogged) or not session.has_key('USER'): redirect_to('login') # Include the '_' function in the public names>> if (session.has_key('USER') and not session['USER'].a_IsLogged) or not session.has_key('USER'): redirect_to('login') Module pylons.controllers.util:92 in redirect_to << for c in response.cookies.values(): found.headers.add('Set-Cookie', c.output(header='')) raise found>> raise found <class 'paste.httpexceptions.HTTPFound'>: 302 Found The resource was found at login</pre></div></div></div><p>ума не приложу как это понять</p> Tue, 09 Oct 2007 13:36:12 -0500 Веб-технологии :: Pylons :: BaseController j2ahttp://www.python.com.ua/forum/viewtopic.php?pid=8482#p8482 8482@http://www.python.com.ua/forum <p>Информации мало. Воспроизведи ошибку в тестовом приложении, выложи куда-нибудь, посмотрим.</p> Tue, 09 Oct 2007 01:34:26 -0500 Веб-технологии :: Pylons :: BaseController dorianhttp://www.python.com.ua/forum/viewtopic.php?pid=8456#p8456 8456@http://www.python.com.ua/forum <p>Нет не трогал. Все в первоначальном виде. Pylons ставил раз поэтому версии совпадают.</p> Mon, 08 Oct 2007 08:37:15 -0500 Веб-технологии :: Pylons :: BaseController j2ahttp://www.python.com.ua/forum/viewtopic.php?pid=8454#p8454 8454@http://www.python.com.ua/forum <p>config/middleware.py не трогал? версия pylons шаблона и текущая версия pylons совпадают?</p> Mon, 08 Oct 2007 08:05:08 -0500 Веб-технологии :: Pylons :: BaseController dorianhttp://www.python.com.ua/forum/viewtopic.php?pid=8449#p8449 8449@http://www.python.com.ua/forum <p>Нет не зацикленый. Потому как контроллер на который редиректится наследуется от стандартного базового котнтроллера</p> Mon, 08 Oct 2007 05:45:07 -0500 Веб-технологии :: Pylons :: BaseController j2ahttp://www.python.com.ua/forum/viewtopic.php?pid=8446#p8446 8446@http://www.python.com.ua/forum <p>Зацикленный редирект?</p> Mon, 08 Oct 2007 04:29:25 -0500 Веб-технологии :: Pylons :: BaseController dorianhttp://www.python.com.ua/forum/viewtopic.php?pid=8445#p8445 8445@http://www.python.com.ua/forum <p>Доброго времени суток. Наследуюсь от базового контроллера:<br /><br />class SbeBaseController(BaseController):<br />&nbsp; &nbsp; def __call__(self, environ, start_response):<br />&nbsp; &nbsp; &nbsp; &nbsp; &quot;&quot;&quot;Invoke the Controller&quot;&quot;&quot;<br />&nbsp; &nbsp; &nbsp; &nbsp; # WSGIController.__call__ dispatches to the Controller method<br />&nbsp; &nbsp; &nbsp; &nbsp; # the request is routed to. This routing information is<br />&nbsp; &nbsp; &nbsp; &nbsp; # available in environ['pylons.routes_dict']<br />&nbsp; &nbsp; &nbsp; &nbsp; try:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return WSGIController.__call__(self, environ, start_response)<br />&nbsp; &nbsp; &nbsp; &nbsp; finally:<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (session.has_key('USER') and not session['USER'].a_IsLogged) or not session.has_key('USER'): redirect_to('login')<br /><br />Получаю ошибку последней строки:<br />&lt;class 'paste.httpexceptions.HTTPFound'&gt;: 302 Found The resource was found at login&nbsp; <br />В чем трабла?</p> Mon, 08 Oct 2007 04:06:40 -0500 Веб-технологии :: Pylons :: Admin панель в Pylons j2ahttp://www.python.com.ua/forum/viewtopic.php?pid=8286#p8286 8286@http://www.python.com.ua/forum <blockquote><div class="incqbox"><h4>j2a написал:</h4><p>AFAIK, аналога нет. Если такой нужен - лучше смотреть в сторону Django, его админку вряд ли кто переплюнет. Как альтернативный вариант (честно, еще не пробовал его), можно попытаться использовать ООБД schevo, к которой уже есть GUI для манипуляции с объектами.<br /><br />Ссылки по теме: <br /><a href="http://schevo.org/">http://schevo.org/</a><br /><a href="http://goldenspud.com/rotr/index.php/2006/12/06/using-schevo-with-a-pylons-app/">http://goldenspud.com/rotr/index.php/20 &hellip; ylons-app/</a></p></div></blockquote><p>Поподробнее про schevo: <a href="http://www.pyobject.ru/blog/post/schevo-tutorial">http://www.pyobject.ru/blog/post/schevo-tutorial</a></p> Sat, 29 Sep 2007 10:18:08 -0500 Веб-технологии :: Pylons :: Вводная статья про Pylons j2ahttp://www.python.com.ua/forum/viewtopic.php?pid=7784#p7784 7784@http://www.python.com.ua/forum <blockquote><div class="incqbox"><h4>webchemist написал:</h4><p>В Django магии гораздо меньше.</p></div></blockquote><p>Подтверждаю. Pylons чем ближе к 1.0 тем более заморочены.<br /><br />P.S. На днях портировал приложение в оригинале написанное для 0.9.3 (но нормально работающее и на 0.9.4 и на 0.9.5) на 0.9.6rc2dev-r2370</p> Sat, 08 Sep 2007 10:40:40 -0500 Веб-технологии :: Pylons :: Выбор фреймворка webchemisthttp://www.python.com.ua/forum/viewtopic.php?pid=7703#p7703 7703@http://www.python.com.ua/forum <p>Если &quot;веб-сервис&quot; это контент-проект, я бы однозначно использовал Django. Особенно, если в проект вписывается его админка (впрочем, админка несложно подстраивается под себя). Замечательное многоуровневое кеширование, быстрые шаблоны, обширный функционал из коробки и гибкость настройки позволяют даже на относительно небольших ресурсах держать вполне приличную нагрузку и быстро разрабатывать довольно разлапистые вещи.<br />Для поддержки же сложных моделей и логики с использованием СУБД - вероятно лучше Pylons ввиду возможности использования более продвинутых билиотек для работы с базами данных (SQLAlchemy например).</p> Wed, 05 Sep 2007 14:24:49 -0500 Веб-технологии :: Pylons :: Выбор фреймворка j2ahttp://www.python.com.ua/forum/viewtopic.php?pid=7652#p7652 7652@http://www.python.com.ua/forum <p>Нет в мире идеала. Хочешь обратной совместимости и &quot;всё в одном&quot; -- используй Django. Нравится TG- используй его, но про обратную совместимость придется забыть. Хочешь попытаться найти компромиссное решение - попробуй Pylons.</p> Mon, 03 Sep 2007 23:03:52 -0500 Веб-технологии :: Pylons :: Выбор фреймворка skyogrehttp://www.python.com.ua/forum/viewtopic.php?pid=7648#p7648 7648@http://www.python.com.ua/forum <p>Извиняюсь за холиварную тему, но всё же..<br />Нужен подходящий фреймворк для интернет-сервиса. Сервис не большой по функциональности, но будет работать под солидной нагрузкой.<br /><br />Пробовал turbogears и pylons, совсем немного. На мой взгляд турбогеарс несколько удобней хотя бы одной вещью: темплейты задаются в декораторах и есть поддержка редиректов в эксепшнах, что даёт возможность кидать ошибку в нужном месте и больше о ней не думать, она покажется в красивой рамочке на нужной странице. Кроме того там есть поддержка встроенных виджетов (контролов, кому как нравится), хотя это не так важно.<br /><br />Но ограничена поддержка SQLAlchemy. Ну и фиг бы с ним, ограничения указанные на официальном сайте мне и не нужны, но поставил SQLAlchemy 0.4beta5 и свежесгенерённое приложение перестало работать. Кроме того они собираются кардинально всё менять в ближайшем майлстоуне и зависеть от этого не хочется, посколько планируется подерживать сервис в течении ближайших нескольких лет как минимум.<br /><br />В итоге из личных впечатлейний: понравилось юзабельность turbogears, но расстроило &quot;раздолбайство&quot; разработчиков каркаса. Посоветует ли что уважаемое сообщество? Что можно сказать по производительности, по отношению разработчиков к обратной совместимости и удобству использования относительно основных веб-фреймворков. Много хороших слов встречал про пилонс.<br /><br />Спасибо.</p> Mon, 03 Sep 2007 16:01:46 -0500 Веб-технологии :: Pylons :: Pylons, SQLALchemy, кодировка - UTF-8 - выводит ????? webchemisthttp://www.python.com.ua/forum/viewtopic.php?pid=7647#p7647 7647@http://www.python.com.ua/forum <blockquote><div class="incqbox"><h4>kch написал:</h4><p>Хотя все это в Gentoo работало, а в Ubuntu такая беда.</p></div></blockquote><p>А как строки попадают в базу? В коде (типа тест), шелл или через некую [веб]форму?</p> Mon, 03 Sep 2007 15:05:36 -0500 Веб-технологии :: Pylons :: Pylons, SQLALchemy, кодировка - UTF-8 - выводит ????? kchhttp://www.python.com.ua/forum/viewtopic.php?pid=7501#p7501 7501@http://www.python.com.ua/forum <p>У меня такая-же проблема.<br />Добавил </p><blockquote><div class="incqbox"><h4>webchemist написал:</h4><p>в DSN прописал ?charset=UTF8. Работает.</p></div></blockquote><p>но только при выводе текста, при его добавлении все равно ругается, что не правильная кодировка!<br /><br />Хотя все это в Gentoo работало, а в Ubuntu такая беда.<br /><br />В чем дело??</p> Tue, 28 Aug 2007 11:12:32 -0500 Веб-технологии :: Pylons :: Pylons, SQLALchemy, кодировка - UTF-8 - выводит ????? webchemisthttp://www.python.com.ua/forum/viewtopic.php?pid=7488#p7488 7488@http://www.python.com.ua/forum <p>Всем спасибо! Пока что решил так - в DSN прописал ?charset=UTF8. Работает.</p> Mon, 27 Aug 2007 12:56:37 -0500