如何从Django模板中反转AngularJS路由?

时间:2016-05-13 12:09:01

标签: angularjs django

我有一个带有AngularJS前端的Django应用程序。应用程序发送通知电子邮件,它使用Django模板呈现。

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')

这意味着我们可以使用

反转特定文章的网址
django.core.urlresolvers.reverse('show-article', kwargs={'article':article_id})

现在,在基于Angular的网站改版中,文章的显示网址看起来像/mysite/#/article/1234,由routes.js决定:

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

最重要的是,我无法从Python中获取AngularJS路由。我可以将routes.js中的所有路由硬编码到后端看到的内容中,但它不会很干。我可以使用Django动态生成routes.js,但是现在我们的其他JS源都没有被Django触及 - 这看起来也不是很干净。也许我应该继续支持旧式网址(/article/1234)作为重定向到Angular风格的网址(/#/article/1234)?我认为这仍然需要逻辑重复。

我应该在这里使用更好的模式吗?

1 个答案:

答案 0 :(得分:0)

解耦客户端和服务器通常是一个目标,因此在这种情况下不应将重复视为坏事。然而,根据您的需要,有一些解决方案可以提供与Django类似的反向方法。特定角度有django-js-reversedjango-angular