2014-07-22 49 views
2

我一直在網上搜索這個特定問題的答案,並且很驚訝,我在這個問題上沒有找到太多東西。我有一個Django站點,我正在重做前端使用Angular,後端使用Django,這似乎是一種常見的做法。但是,我發現的例子都沒有涉及生產中靜態路徑變化的問題。我有一個S3存儲桶正在生產中。因此,使用路徑static/whatever/maybesomecss/oranimage不適用於部分或嘗試使用$ resource存儲在.json文件中的一些數據。使用Django創建角JS部分和靜態文件

下面是一些代碼來說明我在說什麼。

.state('math', { 
     url: '/math', 
     templateUrl: 'games/math', 
     controller: 'MathController' 
    }) 
    .state('secretgame', { 
     url:'/secretgame', 
     templateUrl: 'static/js/games/Partials/secretgame.html', 
     controller: 'secretController' 
    }) 

在上面,遊戲/數學如果有一個Django的網址,它會擊中。但是我不希望人們能夠直接去它,它會變得混亂(這是一個單獨的問題),反正我寧願在這裏使用partials。 '祕密遊戲'的作品,但templateUrl不會在生產中工作。基本上,由於S3存儲桶取代了「靜態」。

一個解決方案是將我通常使用的STATIC_URL設置粘貼到全局JavaScript變量中,然後使用類似templateUrl: staticUrl + js/games/partials/secretgame.html的東西,但這看起來不太好。

有沒有人處理過這個問題?讓我知道我是否應該提供其他信息。

只是爲了澄清:在部分情況下,使用{%verbatim%}將Django模板與AngularJS的模板分開是行不通的。對於從Django URL加載的內容來說,這沒問題,但對於部分內容而言,這完全是由AngularJS消耗的。

+0

不確定要理解你的問題,但不是那個問題可以幫助你解決你的問題嗎? :http://stackoverflow.com/questions/13741221/angular-js-and-partials –

+0

@LukeSkywalker這看起來像是一種很好的方式來加載partials,我可能會嘗試,但它不能解決問題我應該從部分內引用我的靜態文件夾;對於img src,或額外的CSS或任何情況下可能。 – ssaeed

+0

好吧,我讓你知道。我所做的是我所有的JS範圍都在一個模塊中。在我的HTML頁面的末尾,我使用在django視圖中的上下文中傳遞的參數{{static_folder}}來初始化模塊。 –

回答

1

我不得不在處理這種類型的問題時使用django和angular。正如你所說,你可以使用JS全球,只是預先安排,但這是sl。。

雖然它是沿着相同的路線,我認爲一個更乾淨的解決方案是使用您在初始頁面加載時使用django創建的幫助函數。

而是寫作templateUrl: 'static/js/....'的您可以寫信templateUrl: staticUrl('js/...')或者甚至用之類的東西jsUrl,cssUrl等採取進一步

+0

感謝您的提示,能否詳細說明一下? – ssaeed