【问题标题】:How do I reverse an AngularJS route from a Django template?如何从 Django 模板反转 AngularJS 路由?
【发布时间】: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')

这意味着我们可以使用

来反转指向特定文章的 URL
django.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) 的重定向?我认为这仍然需要逻辑上的重复。

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

【问题讨论】:

    标签: angularjs django


    【解决方案1】:

    解耦客户端和服务器通常是一个目标,因此在这种情况下,重复不应被视为一件坏事。但是,根据您的需要,有一些解决方案提供了一种反向方法,其行为类似于 Django。有 django-js-reversedjango-angular 专门用于角度。

    【讨论】:

    • 请记住,我不是要在 Angular 中反转 Django URL(我在这里发现了一个关于此的问题,但我丢失了选项卡:(),我正在尝试反转 Angular Django 中的路由。django-js-reverse 用于另一种方式。您链接的django-angular 页面也是如此。我想从服务器查找前端路由,而不是从客户端查找后端 URL。
    猜你喜欢
    • 2016-02-27
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 2020-07-07
    相关资源
    最近更新 更多