2016-05-13 20 views
0

我有一個AngularJS前端的Django應用程序。應用程序發送通知電子郵件,它使用Django模板呈現。如何從Django模板中反轉AngularJS路由?

ITEM: {{article.title}} 
DATE: {{article.date}} 
SOURCE: {{article.link}} 

{{article.body}} 

問題是article.link。以前版本的應用程序沒有使用Angular,所以很容易找到鏈接。在urls.py我們有

url(r'article/(?P<article>\d+)/$', views.ArticleView.as_view(), name='show-article') 

這意味着我們可以逆轉的URL爲特定物品與

django.core.urlresolvers.reverse('show-article', kwargs={'article':article_id}) 

現在,在網站上,顯示的URL的基於角改造的一篇文章外觀像/mysite/#/article/1234並通過routes.js確定:

$routeProvider.when('/article/:articleId', { ... }) 

底線,我沒有辦法抓住從一個Python AngularJS路線。我可以將來自routes.js的所有路線硬編碼爲後端看到的內容,但它不會很乾。我可以用Django動態地生成routes.js,但現在我們其他的JS源都沒有被Django觸及 - 這看起來也不是很乾淨。也許我應該繼續支持舊式URL(/article/1234)作爲重定向到Angular式URL(/#/article/1234)?我認爲,這仍然需要邏輯重複。

我應該在這裏使用更好的模式嗎?

回答

0

解耦客戶端和服務器往往是一個目標,所以在這種情況下重複不應該被認爲是一件壞事。然而,根據你的需求,有一些解決方案提供了一種在Django中表現相反的方法。對於角度特定,有django-js-reversedjango-angular

+0

請記住,我沒有試圖在Angular中反轉Django URL(我在這裏發現了一個問題,但我失去了該選項卡:(),我試圖在Django中反轉Angular路由。 django-js-reverse'是用於其他方式的,你鏈接的'django-angular'頁面也是如此,我想從服務器找到前端路由,而不是客戶端的後端URL。 – Coderer