私はこのTour of Heroesチュートリアルをフォローしています。Angular 2アプリをDjangoアプリに統合する方法
heroes/app/ contains all the .ts and .html files
heroes/node_modules/ angular2 and other libraries
heroes/styles.css css file
heroes/index.html
heroes/package.json and other config files
は、現在、私は、URLを介してHTTPリクエストを処理Djangoのビューを使ってAPIを構築した:私は、その構造
apps/my_app/migrations/
apps/my_app/__init__.py
apps/my_app/urls.py
apps/my_app/views.py
frontend_stuff/js/ javascripts here
frontend_stuff/css/ css here
ヒーローアプリは、以下の構造を有しているが、以下のように単純化することができるDjangoのアプリを持っていますJSONを返します。しかし、私はこのAngularアプリを現在のDjangoアプリにどこに置くべきですか?Djangoバックエンドへの最初のGETリクエスト時にAngularアプリをブラウザにロードするにはどうしたらいいですか?
EDIT:ロードHTMLとJSのより具体的な質問:
角度2はComponent
を使用し、テンプレートはむしろジャンゴよりも角度によってレンダリングされているので、角度の「アクセス」、これらのhtmlを聞かせする方法? @Luisは、それらのファイルは静的フォルダの中に置かなければならないと述べましたが、{% static %}
はDjangoの構文でAngularには意味がありません。
同様に、私はapp/main
(下記参照)も静的フォルダに配置する必要があります。しかし、角度の中の場所を参照する方法は?ありがとう!
System.import('app/main')
.then(null, console.error.bind(console));
UPDATE: 私はthis answerを踏襲して/static/js/my_app/main
を使用し、それが正常になりました、 "主に" 搭載です。今までのすべてのjsファイルがロードされているようです。コンソールログには、いくつかの角度ファイルが正常に読み込まれる前に404エラーが発生することが示されています。
system.src.js:1085 GET http://localhost:8000/static/js/node_modules/angular2/src/platform/browser.js 404 (NOT FOUND)fetchTextFromURL @ system.src.js:1085(anonymous function) @ system.src.js:1646ZoneAwarePromise @ angular2-polyfills.js:589(anonymous function) @ system.src.js:1645(anonymous function) @ system.src.js:2667(anonymous function) @ system.src.js:3239(anonymous function) @ system.src.js:3506(anonymous function) @ system.src.js:3888(anonymous function) @ system.src.js:4347(anonymous function) @ system.src.js:4599(anonymous function) @ system.src.js:337ZoneDelegate.invoke @ angular2-polyfills.js:332Zone.run @ angular2-polyfills.js:227(anonymous function) @ angular2-polyfills.js:576ZoneDelegate.invokeTask @ angular2-polyfills.js:365Zone.runTask @ angular2-polyfills.js:263drainMicroTaskQueue @ angular2-polyfills.js:482ZoneTask.invoke @ angular2-polyfills.js:434
system.src.js:1085 XHR finished loading: GET "http://localhost:8000/static/js/rbac/app/rbac.service.js".fetchTextFromURL @ system.src.js:1085(anonymous function) @ system.src.js:1646ZoneAwarePromise @ angular2-polyfills.js:589(anonymous function) @ system.src.js:1645(anonymous function) @ system.src.js:2667(anonymous function) @ system.src.js:3239(anonymous function) @ system.src.js:3506(anonymous function) @ system.src.js:3888(anonymous function) @ system.src.js:4347(anonymous function) @ system.src.js:4599(anonymous function) @ system.src.js:337ZoneDelegate.invoke @ angular2-polyfills.js:332Zone.run @ angular2-polyfills.js:227(anonymous function) @ angular2-polyfills.js:576ZoneDelegate.invokeTask @ angular2-polyfills.js:365Zone.runTask @ angular2-polyfills.js:263drainMicroTaskQueue @ angular2-polyfills.js:482ZoneTask.invoke @ angular2-polyfills.js:434
system.src.js:1085 XHR finished loading: GET "http://localhost:8000/static/js/node_modules/angular2/src/platform/browser.js".fetchTextFromURL @ system.src.js:1085(anonymous function) @ system.src.js:1646ZoneAwarePromise @ angular2-polyfills.js:589(anonymous function) @ system.src.js:1645(anonymous function) @ system.src.js:2667(anonymous function) @ system.src.js:3239(anonymous function) @ system.src.js:3506(anonymous function) @ system.src.js:3888(anonymous function) @ system.src.js:4347(anonymous function) @ system.src.js:4599(anonymous function) @ system.src.js:337ZoneDelegate.invoke @ angular2-polyfills.js:332Zone.run @ angular2-polyfills.js:227(anonymous function) @ angular2-polyfills.js:576ZoneDelegate.invokeTask @ angular2-polyfills.js:365Zone.runTask @ angular2-polyfills.js:263drainMicroTaskQueue @ angular2-polyfills.js:482ZoneTask.invoke @ angular2-polyfills.js:434
angular2-polyfills.js:332 Error: Error: XHR error (404 NOT FOUND) loading http://localhost:8000/static/js/node_modules/angular2/src/platform/browser.js(…)ZoneDelegate.invoke @ angular2-polyfills.js:332Zone.run @ angular2-polyfills.js:227(anonymous function) @ angular2-polyfills.js:576ZoneDelegate.invokeTask @ angular2-polyfills.js:365Zone.runTask @ angular2-polyfills.js:263drainMicroTaskQueue @ angular2-polyfills.js:482ZoneTask.invoke @ angular2-polyfills.js:434
system.src.js:1085 GET http://localhost:8000/static/js/node_modules/angular2/src/http.js 404 (NOT FOUND)
更新:上記のエラーは、System Confingでの不正なパスによるものです。あなたはいくつかの世話をする必要があります
<script>
System.config({
defaultJSExtensions: true,
map:{
angular2: '/static/js/node_modules/angular2',
rxjs: '/static/js/node_modules/rxjs'
},
packages: {
app: {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('/static/apps/my_app/app/main')
.then(null, console.error.bind(console));
</script>
返信いただきありがとうございます! HTMLやその他の静的ファイルの読み込みに関するあなたの返信に関する質問を更新しました。もう一度見てもらえればいいですありがとう! – totoro
私はAngularJS 2でどうやってやっているのか分かりませんし、DJANGOがデフォルトで.tsファイルを解析しないことにも注意してください。あなたのブラウザがライブラリを介して.tsファイルを解析できるようにするか、.tsファイルを.jsファイルにコンパイルする必要があります。 –
はい、すべての.tsファイルがjsにコンパイルされています。私はちょうどjsのほとんどをロードする(私のすべてのjsファイルとほとんどの角度js)とポストを更新しました。特定のjsファイルを読み込んで404が発生する理由はありますが、コンソールログには正常にロードされたことが表示されます。ありがとう! – totoro