【发布时间】: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