如何从 Python Pyramid 为 AngularJS 应用程序提供 index.html 文件?
Posted
技术标签:
【中文标题】如何从 Python Pyramid 为 AngularJS 应用程序提供 index.html 文件?【英文标题】:How should an index.html file be served from Python Pyramid for an AngularJS app? 【发布时间】:2013-06-22 02:18:36 【问题描述】:我正在使用 AngularJS 进入单页应用程序,但不是使用 Node 或类似的,我最喜欢服务器上的 Python。因此,鉴于我对 Pyramid 有点熟悉,我计划使用 pyramid_rpc
模块将 JSON 对象返回给客户端应用程序。这一切都很简单,但是,提供包含 AngularJS 初始 AngularJS 应用程序的起始索引文件的最佳方式是什么?通常,静态文件是从static
目录提供的,但是从根目录提供index.html
文件有什么问题吗?或者我应该使用带有渲染器的视图可调用和 '/'
路由到 html 模板?话虽如此,Pyramid 对于这种应用程序是否矫枉过正?任何建议都会很棒。
【问题讨论】:
【参考方案1】:如果您打算返回一些 JSON 响应,那么 Pyramid 是一个不错的选择。但我不建议使用pyramid_rpc。 JSON-RPC 是一种用于服务器之间的 RPC 通信的协议。直接的 json 响应更适合大多数客户端(如浏览器),例如只是一组返回 JSON 响应以响应 GET/POST 请求的路由。这也是提供index.html
的好地方,可能有一个很好的http_cache
参数来防止客户端过于频繁地请求该页面(当然你可以进一步优化这条路线,但你应该把它留到以后)。
config.add_route('index', '/')
config.add_route('api.users', '/api/users')
config.add_route('api.user_by_id', '/api/users/userid')
@view_config(route_name='index', renderer='myapp:templates/index.html', http_cache=3600*24*365)
def index_view(request):
return
@view_config(route_name='api.users', request_method='POST', renderer='json')
def create_user_view(request):
# create a user via the request.POST parameters
return
'userid': user.id,
@view_config(route_name='api', request_method='GET', renderer='json')
def user_info_view(request):
userid = request.matchdict['userid']
# lookup user
return
'name': user.name,
【讨论】:
Pyramid 不喜欢索引视图中的渲染器。KeyError('renderer factories', '.html')
。我找不到任何关于在没有模板引擎的情况下呈现纯 HTML 的信息。线索?
你不能渲染“纯 HTML”。您呈现一个模板,其中纯 html 将是一个子集。我建议只制作一个名为 index.html.mako
的模板来呈现您想要的 html。以上是关于如何从 Python Pyramid 为 AngularJS 应用程序提供 index.html 文件?的主要内容,如果未能解决你的问题,请参考以下文章
Python Web框架:Django vs Flask vs Pyramid
使用 React 和 Pyramid(微服务架构)进行身份验证,如何存储“会话数据”?
选择一个 Python Web 框架:Django vs Flask vs Pyramid
使用 Python3 在 Pyramid 中使用 Websocket