【发布时间】:2016-09-09 15:12:29
【问题描述】:
我有一个带有 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')
这意味着我们可以使用
来反转指向特定文章的 URLdjango.core.urlresolvers.reverse('show-article', kwargs={'article':article_id})
现在,在基于 Angular 的网站改造中,文章的显示 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) 的重定向?我认为这仍然需要逻辑上的重复。
我应该在这里使用更好的模式吗?
【问题讨论】: