我有一个带有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
)?我认为这仍然需要逻辑重复。
我应该在这里使用更好的模式吗?
答案 0 :(得分:0)
解耦客户端和服务器通常是一个目标,因此在这种情况下不应将重复视为坏事。然而,根据您的需要,有一些解决方案可以提供与Django类似的反向方法。特定角度有django-js-reverse和django-angular。