6

我想在服务器端使用flask(python)和在客户端使用angularjs(javascript)开发一个Web应用程序。我在 github 上查看了 /flask-angular-seed 项目,但它与 /angular-seed 项目相同。它不包含对烧瓶框架的任何支持。我是烧瓶的新手。如何使烧瓶和角度作为服务器客户端一起工作?我知道如何使用烧瓶创建 Web 服务,并且我还完成了 Angular 教程。但我很困惑如何让这两者一起工作(比如应该调用什么http请求以及flask如何接收和响应它)。

4

1 回答 1

7

我这样做的方式是为将加载主 html 模板的接口(例如 /)设置一个单一路由。然后,该模板在静态文件夹中为您的 Angular 应用程序引用 js。

然后我为角度对话的各种交互点(在我的情况下是rest-y)创建路线。我使用了一个叫做 restangular 的角度模块来使它更容易/更干净。我的路线以 json 格式返回所有内容,然后可以直接使用。

我还设置了额外的路由,以便 /blah/whatever 也可以路由到主界面。我忽略了路径,一旦加载了角度 js,路由器(角度)将查看路径并将其映射到正确的接口路由。

@app.route('/<path:path>')
@app.route('/')
def admin(path=None):
    return render_template('angular_interface.html')

基本上 - 对于界面,我完全摆脱了烧瓶。

编辑:文件夹方面你可能有类似的东西:

__init__.py
api
api/__init__.py
api/resources.py
api/views.py
static/interface/css/style.css
static/interface/js/app.js
static/interface/js/other_modules_etc.js
static/shared/js/angular.js
static/shared/js/restangular.js
templates/interface.html

在我的__init__.py我有上面描述的路由结构(和 Flask 应用程序的东西)。

我的 interface.html 模板如下所示。

<html>
<head>
  <title>Blah</title>
  <link rel="stylesheet" href="{{ url_for('static', filename='interface/css/style.css') }}"/>
  <script src="{{ url_for('static', filename='shared/js/angular.js') }}"></script>
  <script src="{{ url_for('static', filename='shared/js/restangular.js') }}"></script>
  <script src="{{ url_for('static', filename='interface/js/app.js') }}"></script>
</head>
<body>
  {% raw %}
  <div ng-app="blah" ng-cloak>
    <div ng-controller="BlahCtrl" class="sidebar">
    </div>
  </div>
  {% endraw %}
</body>
</html>
于 2013-09-18T12:53:01.840 回答