金字塔:如何在单独的文件中使用@view_defaults和@view_config以及类创建REST服务器
Pyramid : How to create a REST Server using @view_defaults and @view_config with classes in separate file
我正在按照 tutorial 在金字塔中创建一个简单的 REST 服务器。当我在同一个文件中编写 class 和服务器启动代码时,它按预期工作。但是当我将 class 文件移动到单独的文件时它不起作用。
以下是我的项目结构。
我写的代码是
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 错误。
谁能帮我找出我做错了什么?
我解决了如下问题
创建了一个名为 'api'
的目录(模块)
将 class 文件 test_view_defaults.py
移动到上面创建的目录中
将扫描方法更改为config.scan(package='api')
修改后的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()
我正在按照 tutorial 在金字塔中创建一个简单的 REST 服务器。当我在同一个文件中编写 class 和服务器启动代码时,它按预期工作。但是当我将 class 文件移动到单独的文件时它不起作用。
以下是我的项目结构。
我写的代码是
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 错误。
谁能帮我找出我做错了什么?
我解决了如下问题
创建了一个名为 'api'
的目录(模块)
将 class 文件
test_view_defaults.py
移动到上面创建的目录中将扫描方法更改为
config.scan(package='api')
修改后的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()