如何在客户端开发一个带有angularjs的web应用程序,在后端使用flask?

时间:2013-09-18 12:25:56

标签: javascript python angularjs web-applications flask

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

1 个答案:

答案 0 :(得分:7)

我这样做的方法是为接口(例如/)设置一条加载主html模板的路径。然后该模板在静态文件夹中引用角度应用程序的js。

然后我为各种交互点创建路由(在我的情况下,它是rest-y),这也是角度对话。我使用一个名为restangular的角度模块来使其更容易/更清洁。我的路由返回json中的所有内容,然后可以直接使用。

我还设置了额外的路线,这样/ blah /无论什么也会路由到主界面。我忽略了路径,一旦角度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 app内容)。

我的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>