【问题标题】:AngularJS and Django: Conflicting routingAngularJS 和 Django:冲突的路由
【发布时间】:2015-09-21 11:32:53
【问题描述】:

所以,我正在将 AngularJS 与 Django 后端集成。

为了加载 HTML 部分/模板,我使用了 angularjs 的 ui-router。这是我的 angularjs 代码:

function config($stateProvider, $urlRouterProvider, $httpProvider, $locationProvider) {
    $stateProvider.state("home", {
        url: "",
        controller: "HomeCtrl as home",
        templateUrl: "/static/templates/home.html"
    })
    .state("feed", {
        url: "/feed",
        controller: "FeedCtrl as feed",
        templateUrl: "/static/templates/feed.html"
    })
}

我的家乡加载正常。但是当我尝试加载提要状态时,出现以下错误:

我猜 Django 会干扰 angularjs 的路由?我该如何处理?

【问题讨论】:

  • 您是如何尝试加载 Feed 状态的?通过直接输入 URL 或在加载 home 状态时单击某个链接?
  • 直接输入网址?这有关系吗?
  • 好的,知道了!应该输入“baseurl/#/feed”而不是“baseurl/feed”。谢谢! :)
  • 如果您直接输入该 URL,AngularJS 无法捕获它,因为它没有加载。如果你想有没有#的URL,你应该在直接输入任何由angularjs管理的URL时从django返回相同的角度模板

标签: javascript python angularjs django angular-ui-router


【解决方案1】:

Django 必须以与“home”状态相同的方式处理“feed”状态。

url(r'^(feed)?$', "your_app.views.home")

最好的方法可能是通过主视图处理所有剩余的 url,然后在 Angular 中处理它。在 urls.py 的最后一行添加这个

url(r'^.*$', "your_app.views.home", name='home'),

别忘了 activete HTML5 模式

$locationProvider.html5Mode(true);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-26
    • 2014-09-23
    • 1970-01-01
    • 2016-03-06
    • 2017-04-11
    • 1970-01-01
    • 2014-02-16
    相关资源
    最近更新 更多