Найти - Пользователи
Полная версия: Фреймворк для рекомендательного сервиса
Начало » Web » Фреймворк для рекомендательного сервиса
1 2 3 4 5
Singularity
o7412369815963
там есть еще вариант с автоматическим поиском как в джанге.
Pyramida удобней джанги
KsimMiloff
Вы слишком “по диагонали” пробежались . На том же оф. сайте есть альтернативный пример:
@view_config(route_name='hello')
def hello_world(request):
body = '<h1>Hi %(first)s %(last)s!</h1>' % request.matchdict
return Response(body)
и конфигурация тоже хранится отдельно, как-то так:
config.add_route('hello', '/howdy/{first}/{last}')
Lexander
o7412369815963
Зачем столько действий по добавлению роута? Почему не передать ф-ию hello_world сразу в add_route, как сделано во многих фреймворках, зачем безполезный “config = Configurator()” тут? Когда многие, добавляют роуты сразу в приложение.
Это один из способов.
Есть способы побыстрее и попроще, есть - для унификации и упрощения последующей поддержки, а есть вообще автогенерация раутов :)
В Пирамиде даже 2 глобальных механизма работы с URL (URl dispatch, traversal), можно выбрать тот, который ближе идеологически или больше подходит для проекта.
KsimMiloff
Мне бы теперь найти чего-нибудь почитать, кроме оф. доки. Какую-нибудь хорошую книгу по пирамидам, которую должен прочитать каждый pyramid-разрабочик. В частности интересует как правильно строить архитектуру приложения. Или может быть тему о книгах стоит поднять в pyramid-ветке форума?
bismigalis
o7412369815963
Зачем столько действий по добавлению роута?
0. на один роут может быть назначено несколько вьюх
1. добавление роута и добавление вьюхи может быть в разных пакетах
2. роут добавленный в одном пакете, может быть переопределен в другом пакете
3. вьюха добавленная в одном пакете может быть переопределена в другом пакете

o7412369815963
Почему не передать ф-ию hello_world сразу в add_route, как сделано во многих фреймворках
сначала так и было, но начиная с версии 1.1 депрекейтед (почему смотри выше)

o7412369815963
зачем безполезный “config = Configurator()” тут? Когда многие, добавляют роуты сразу в приложение.
не понял эту фразу.

ADDED: намек на фласк? во фласке объект Flask выполняет ту же роль что обект Configurator в пирамиде, инкапсулирует конфигурацию приложения. То что во фласке называется конфигурацией(словарь config) в пирамиде называется настройками (словарь settings)

поэтому фраза “бесполезный config = Configurator()” непонятна, во фласке app = Flask() полезен же :)
bismigalis
KsimMiloff
В частности интересует как правильно строить архитектуру приложения.

как и в других системах делишь логически на модули, в главном модуле подключаешь остальные

можешь посмотреть как это делается в substanced

KsimMiloff
Какую-нибудь хорошую книгу по пирамидам
нет такой книги. можешь видео посмотреть на pyvideo.org
ZZZ
o7412369815963
зачем безполезный “config = Configurator()” тут? Когда многие, добавляют роуты сразу в приложение.
o7412369815963, ты проглядел документацию не просто по диагонали, а ещё и сзада наперёд. В пирамиде приложение конфигурируется через конфигуратор.
Вообще, простота хелоуворда зачастую создаёт больше сложностей, чем плюсов. Это как threadlocal во фласке – для хелоуворда это действительно красиво, но для серьёзного приложения, как мне кажется, это очень криво.

P.S. Роуты? Не, не слышал!
o7412369815963
воу, воу, полегче :)

Видел я альтернативные варианты, добавление обработчиков через декоратор в “глобальное” пространство мне не нравится. А этот scan(), зачем, если мы уже через декоратор добавили, опять же - добавляли бы тогда сразу в приложение. А если не все обработчики нужны, то их можно просто не подключать.
Singularity
там есть еще вариант с автоматическим поиском как в джанге.

bismigalis
1. добавление роута и добавление вьюхи может быть в разных пакетах
2. роут добавленный в одном пакете, может быть переопределен в другом пакете
3. вьюха добавленная в одном пакете может быть переопределена в другом пакете
Вот это хорошая идея, хотя это делается (почти) в любом фреймворке в “три строки”, тут оно только из коробки. И нужно наверно только для встраиваемых приложений, т.е. правильней это надо было подавать как расширенный ф-л, а не как основной.

bismigalis
поэтому фраза “бесполезный config = Configurator()” непонятна, во фласке app = Flask() полезен же :)
Я имел ввиду помимо приложения ещё конф. создавать, когда во многих достаточно просто приложение создать.

ZZZ
Вообще, простота хелоуворда зачастую создаёт больше сложностей, чем плюсов.
Возможно, и создана для заманухи. Но хелоуврод на 100 строк должен заставить задуматься что что-то тут не так(это не про пирамиду).

Я наверно на днях сделаю мини-сравнение с ботлом, может в пирамиде есть что-то… выложу, а вы прокоментируете ;)
А что скажите о таких пакетах как decorator, path, tweens, interfaces, authorization, authentication. Используете?
o7412369815963
KsimMiloff
Я очкую , ведь сейчас должен выбрать фреймворк, который потом буду обязан “любить”, какое-то продолжительное время.
Если время не терпит, то можно начать с клиентской части или лепить функционал (логику) без привязки к фреймворку.

У меня был проект-фреймворк который можно было запустить на разных веб-фреймворках, была нормализующая прослойка между ними, т.к. базово-необходимые вещи есть везде - роуты, реквест/респонс, куки и т.п.

Если бы заказчик потребовал джангу, то можно было сделать джанго-прослойку и втащить свой фреймворк внутрь джанги. “Физический” получается это приложение а не фреймворк, которое можно было запустить на разных веб-фреймворках. :)
bismigalis
o7412369815963
хотя это делается (почти) в любом фреймворке в “три строки”
не верю
o7412369815963
И нужно наверно только для встраиваемых приложений, т.е. правильней это надо было подавать как расширенный ф-л, а не как основной.
так и есть. как ты это себе представляешь?

o7412369815963
Я имел ввиду помимо приложения ещё конф. создавать, когда во многих достаточно просто приложение создать.
конф. это и есть приложение, название просто другое (объекты Configurator, Flask и Bottle выполняют сходную функцию, мутируя внутренние структуры, конфигурируют фреймворк)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB