6

サーバー側でフラスコ(python)、クライアント側でangularjs(javascript)を使用してWebアプリを開発したいと考えています。github で /flask-angular-seed プロジェクトをチェックアウトしましたが、/angular-seed プロジェクトと同じです。フラスコ フレームワークのサポートは含まれていません。私はフラスコが初めてです。フラスコと角度をサーバークライアントとして連携させる方法は? フラスコを使用してWebサービスを作成する方法を知っており、角度のあるチュートリアルも行いました。しかし、これら2つを連携させる方法がわかりません(httpリクエストを呼び出す方法や、フラスコがそれを受信して​​応答する方法など)。

4

1 に答える 1

7

私がそれを行う方法は、メインの html テンプレートをロードするインターフェイス (例: /) の単一のルートを持つことです。そのテンプレートは、静的フォルダー内の角度アプリの js を参照します。

次に、さまざまなインタラクション ポイント (私の場合は rest-y) のルートを作成します。私は restangular と呼ばれるAngularモジュールを使用して、それをより簡単/きれいにします。私のルートは、直接使用できるすべてをjsonで返します。

また、/blah/whatever もメイン インターフェイスにルーティングされるように、追加のルートをセットアップします。パスを無視し、Angular js が読み込まれると、ルーター (Angular 内) がパスを確認し、正しいインターフェイス ルートにマップします。

@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 に答える