Как правильно настроить маршруты в Pyramid Framework?

Я хочу зарегистрировать обработчик запросов, но не хочу использовать метод сканирования.

Почему мне нужно вызывать оба метода (add_route и add_view) вместо одного?

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
from pyramid.view import view_config


@view_config(name='home')
def home(request):
    return Response('Welcome!')


def add_view(config, handler, name, path):
    config.add_route(name, path)
    config.add_view(handler, name=name)


if __name__ == '__main__':
    config = Configurator()
    add_view(config, home, 'home', '/')
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 8080, app)
    server.serve_forever()

1 ответ

(1) Если вы используете декоратор @view_config в Pyramid, вы должны использовать config.scan(). (Это декларативная конфигурация.) См. Добавление конфигурации вида с использованием декоратора @view_config.

В качестве альтернативы вы можете использовать императивную конфигурацию, используя config.add_view(), См. Добавление конфигурации вида с помощью add_view ().

(2) Возможно, вам следует спросить: "Почему я хочу настроить и мой маршрут, и вид с помощью одной декларации?" Это препятствует назначению нескольких видов на один маршрут. Удобство сохранения одной строки кода имеет свои недостатки.

В пирамиде объявление маршрута и вида по отдельности позволяет назначать несколько видов одному маршруту. Например, назначьте одно представление для запроса GET, а другое - для запроса POST для того же маршрута. С одной стороны, это делает создание RESTful API менее обременительным. Для получения дополнительной информации см. Документацию Pyramid, Введение в Pyramid - представление предикатов и множество представлений на маршрут.

Другие вопросы по тегам