2017-02-06 68 views
13

對於一個項目,我在後端使用Django,在前端使用AngularJs。使用Django的URL與AngularJs routeProvider

基本上,我想要的只是當URL開始projectkeeper/運行Angular應用程序。

換句話說,可以說我的網站是example.com。我想要角度應用運行的網址爲example.com/projectkeeper/dashboard/example.com/projectkeeper/projects/等,但不是example.com/about/

希望我已經說清楚了。總之,爲了做到這一點,我做我的代碼如下:

urls.py

urlpatterns = [ 
    url(r'^projectkeeper/$', TemplateView.as_view(template_name='base.html')), 
] 

在模板base.html文件,我指的是我的角度應用效果顯着。對於角路由,我也做了以下內容:

myapp.config(['$routeProvider', function($routeProvider) { 
    $routeProvider 
     .when('/dashboard/', { 
      title: 'Dashboard', 
      controller : 'DashboardController', 
      templateUrl : 'static/app_partials/projectkeeper/dashboard.html' 
     }) 
     .otherwise({ redirectTo : '/' }); 
}]); 

所以,理想情況下,我的想法是,要example.com/projectkeeper/#/dashboard/將運行從我的角度應用的DashboardController。但是,情況並非如此,我只能看到空白頁面,這意味着路由不正確。

對此的任何解決方案?正如我之前所說的,我想要的是運行Angular應用程序只有時,URL開始projectkeeper/

+0

你有正確定義你的靜態文件嗎? –

+0

是的,靜態文件工作正常。控制器已正確加載。 URL模式是個問題。 –

+0

你應該檢查瀏覽器的控制檯是否有錯誤,我想。最好追溯出什麼地方出了問題 –

回答

4

我覺得你很親密,有幾件事情可以做到這一點(老實說,這是混淆理解,我希望我沒有忘記任何東西)。

首先,您的網址順序很重要,如果你定義他們將首先呈現的角度路線之前的東西,所以角一個尚未使用的Django應用程序的網址

然後,如果您想要使角度知道子路徑,您需要在標題中定義<base>標記。你的情況:

<base href="/projectkeeper/" />

(你也可以定義projectkeeper它所有的功能where THO)。

對於網址,我會將正則表達式更改爲:r'^projectkeeper/.*'。再次,應該是您的網址列表中的最後一個。

你會遇到的其他問題,如{{ }},認證問題,但那些留了不同的答案:)