我在django開發一個應用程序,並使用backbone.js。這些網址使用骨幹路由器進行路由。我的HTML是在一個靜態頁面,當我點擊一個鏈接,例如href="/user/home"
,一個頁面被加載,如果我刷新瀏覽器(發送一個HTTP請求)的URL,我得到錯誤404,因爲Django的URL沒有那個URL 。url dispatch using backbone.js
我有一個senario,我正在使用Facebook(django_facebook)登錄,每當我點擊鏈接Facebook登錄,我就會得到一個空白頁面(就像任何其他無效的URL會因爲這個* splats的方式 - - {"*action" : "defaultRoute"}
見下面的代碼),當我刷新瀏覽器它的作品(打開fb標籤登錄。),因爲我有url(r'^facebook/', include('django_facebook.urls'))
,在URLS.PY.
我的問題是如何將點擊鏈接並具有開放FB選項卡或彈出窗口,因爲在這種情況下,它不工作,我不得不打網址在瀏覽器中爲它工作。
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
@ migajek只在不支持HTML5歷史記錄對象的瀏覽器中(IE8和IE9我在看着你) – tkone