Как правильно настроить маршруты в 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 - представление предикатов и множество представлений на маршрут.