金字塔:如何使用@view_defaults和@view_config在单独文件中创建类的REST服务器

问题描述 投票:0回答:1

我正在按照tutorial在金字塔中创建一个简单的REST服务器。当我在同一文件中编写类和服务器启动代码时,它会按预期工作。但是,当我将类文件移动到单独的文件时,它不起作用。

以下是我的项目结构。enter image description here

我写的代码是

1。 server.py

from wsgiref.simple_server import make_server
from pyramid.config import Configurator

from test_view_defaults import RESTView

if __name__ == '__main__':
  with Configurator() as config:
    config.add_route('rest', '/rest')
    config.scan()
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 6543, app)
    server.serve_forever()

2。 test_view_defaults.py

from pyramid.response import Response
from pyramid.view import view_config
from pyramid.view import view_defaults

@view_defaults(route_name='rest')
class RESTView(object):
  def __init__(self, request):
      self.request = request

  @view_config(request_method='GET')
  def get(self):
      return Response('get')

  @view_config(request_method='POST')
  def post(self):
      return Response('post')

  @view_config(request_method='DELETE')
  def delete(self):
      return Response('delete')

当我请求http://localhost:6543/rest时,显示404错误。谁能帮助我找到我做错了吗?

python python-3.x pyramid
1个回答
0
投票

我解决了以下问题

  1. 已创建名为“ api”的目录(模块)

  2. 将类文件test_view_defaults.py移动到上面创建的目录中

  3. 将扫描方法更改为config.scan(package='api')

  4. 更改后的server.py如下

from wsgiref.simple_server import make_server
from pyramid.config import Configurator


if __name__ == '__main__':
  with Configurator() as config:
    config.add_route('rest', '/rest')
    config.scan(package='api')
    app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 6543, app)
    server.serve_forever()
© www.soinside.com 2019 - 2024. All rights reserved.