【问题标题】:url dispatch using backbone.js使用backbone.js 进行url 调度
【发布时间】:2012-11-24 05:35:43
【问题描述】:

我正在用 django 开发一个应用程序,并且正在使用backbone.js。 url 使用骨干路由器路由。我的 HTML 在一个静态页面中,当我单击一个链接(例如 href="/user/home")时,会加载一个页面,如果我使用该 url 刷新浏览器(发送一个 http 请求),我会收到错误 404,因为 django url 没有那个网址。

我有一个使用 facebook (django_facebook) 登录的场景,每当我单击 Facebook 登录链接时,我都会得到一个空白页面(就像任何其他无效 url 会因为这个 *splats 而做的那样—— {"*action" : "defaultRoute"} 见下面的代码),当我刷新浏览器时它可以工作(打开 fb 选项卡进行登录。)因为我在 URLS.PY 中有url(r'^facebook/', include('django_facebook.urls'))

我的问题是如何单击链接并打开 fb 选项卡或弹出窗口,因为在这种情况下它不起作用,我必须在浏览器中点击 url 才能工作。

backbone.js 路由器

Api.Routers.MainRouter = Backbone.Router.extend({
routes: {
    ":user/messages/:action/:target": "messagesAction",
    ":user/challenge/:action/:target" : "gameScores",
    ":user/challenge/:action/:target/:bet" : "challengeResult",
    ":user/challenge/:action": "challengeAction",
    ":user/:action" : "userAction",
    ":user/friends/:action/:target" : "friendsAction",
    "*action" : "defaultRoute"
},
messagesAction: function (user, action, target) {
    myScrollAction = action;
    conversationAction (action);
    //HIGHTLIGHT FOOT NAV
    $(".selected").removeClass("selected");
    $("#nav-messages").parents("li").addClass("selected");

    $(".message-friend-name").html(target.replace(/%20/g, " "))
},
challengeResult: function (user, action, target, bet) {
    defaultRouterAction (action);
    myScrollAction = action;
    ...

谢谢。

【问题讨论】:

  • 不应该在哈希(#)之后附加骨干路由吗?对我来说,路由似乎根本不起作用。
  • @migajek 仅在不支持 HTML5 历史对象的浏览器中使用(IE8 和 IE9 我在看你)

标签: django backbone.js


【解决方案1】:

所以听起来你在这里问了两个问题。

第一个问题涉及到你的 Backbone 路由器中有你的 Django 应用没有的路由。

因此,当路由器接管时,它实际上会将新历史推送到浏览器的历史堆栈中(除非您在 IE8 和 9 中使用哈希片段)。这意味着当您点击重新加载时,您的浏览器将向服务器请求该资源。

为了防止 404 发生,您要么不使用历史对象,要么确保 Backbone 路由器中存在的所有路由也都镜像到 Django URL 配置中。

您遇到的第二个问题是关于使用 Facebook 登录。您应该将问题的这一部分分开并重新提出,因为它也与您正在使用的 Django 插件有关,如果您这样做,您将获得更好的牵引力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 2021-08-24
    • 2017-10-27
    相关资源
    最近更新 更多