2013-08-09 14 views

答えて

56

興味深い最適化のためのDjangoのテンプレートから、あなたのクライアント側のテンプレートに電力を供給する方法があります。しかし、DjangoとAngularJSのテンプレート言語の間の類似点を考えると、ここではやってみる価値はほとんどありません。この種のプロジェクトでは、AngularJSのスタティックサービスとDjango REST Frameworkをペアにします。

操作の私urls.py順序が最初(厳密に可能な限りのように記述)ほとんど常にDjangoのRESTフレームワークのURLで、地元のテストのための私のSTATIC_ROOTディレクトリに私のベースAngularJSアプリケーションテンプレートに他のすべてを指す一般的なパターンが続くの/ devシナリオ:あなたはハッシュタグにそれを好む場合

if settings.DEBUG: 
    urlpatterns += patterns('django.contrib.staticfiles.views', 
     url(r'', 'serve', { 
      'document_root': settings.STATIC_ROOT, 
      'path': '/base.html'} 
     ), 
    ) 

同じアプリ/テンプレートに一致しないリクエストの全てを向けることによって、あなたは、URLとルーティングの歴史・ハックの方法を使用して起動することができます。ハッシュタグに固執するだけの場合は、最終的なURLの一致がより厳しくなる可能性があります(たとえば/(URLルート)とr'^$')。

生産時には、nginxのようなリバースプロキシまたは低速クライアントのHTTPサーバーを使用してAngularJS(静的)コンテンツを提供し、RESTサービスのリクエストをDjango WSGIアプリケーションにプロキシします。

Django RESTフレームワークと通信するために、私は、AngularJSアプリケーションとDjango RESTフレームワークとの間でデータをマーシャリングするために、クラスに似たJSオブジェクトを使用することをお勧めします。このため、angular-django-rest-resourceを使用して、RESTフレームワークビューで公開しているDjangoモデルクラスを表すクラスを生成します。最大限の柔軟性を

角度-ジャンゴ - 残りリソースがリソースを作ることができ、クエリで、私が説明したhereとしてRESTフレームワークのためにインストールジャンゴ・フィルタバックエンドを持っています。これにより、JSリソースは、パラメータによって制限されたDjangoオブジェクト(例えば、/polls/?author=345&finished=1)を要求できます。

AngularJSメインテンプレートが配信されている別のサーバードメインにDjangoおよびREST操作を展開している場合(たとえば、HTML用に別のインターネットドメインでサードパーティのCDNを使用している場合)、それらのリソースへのクロスドメイン要求を許可することが重要です。このため、私はdjango-cors-headersミドルウェアをお勧めします。

私はこれが役に立ちそうです。 ベストプラクティスセットではありませんが、それは私のために働いたものです。参照ジャンゴとAngularjsのミックスアップを防ぐため

+1

どのように登録と認証を管理しましたか? – poiuytrez

+0

私は認証部分にDjangoを使用する予定です。 – poiuytrez

+3

良い質問です。すべてのケースが異なるので、私はそれを残しました。コミュニティが採用した「ベストプラクティス」は、AngularJSサービスを作成して、ユーザーの認証ステータスを照会するシングルトンを提供します。 [この記事](http://blog.brunoscopelliti.com/deal-with-users-authentication-in-an-angularjs-web-app)では、このようなサービスをどのように構築するかについて詳細に説明しています。 Djangoの組み込み認証を使用する場合は、[Django RESTフレームワークのセッションベースの認証](http://django-rest-framework.org/api-guide/authentication.html#sessionauthentication)を有効にすることをお勧めします。 。 –

6

https://docs.angularjs.org/api/ng/provider/ $ interpolateProvider

基本的に{[{XYZ}]}変数を一緒に使用するために、{{XYZ}}変数と角度を使用するジャンゴを有効にする:

app.config(function($interpolateProvider) { 
    $interpolateProvider.startSymbol('{[{'); 
    $interpolateProvider.endSymbol('}]}'); 
}); 
+0

ありがとうございました!{{}}使用時にdjango + angularを使用する際に問題が発生しました。それは私を夢中にさせていた! – Herman

関連する問題