私はdjangoでアプリを開発していて、backbone.jsを使用しています。URLは、バックボーンルーターを使用してルーティングされます。私のHTMLは1つの静的ページにあります。たとえばhref="/user/home"
、ページが読み込まれ、URLでブラウザを更新(httpリクエストを送信)すると、djangoのURLにそのURLがないため、エラー404が発生します。
Facebook(django_facebook)を使用してログインし、Facebookサインインのリンクをクリックするたびに、空白のページが表示されるシナリオがあります(この*スプラットが原因で他の無効なURLが実行するのと同じように-{"*action" : "defaultRoute"}
以下のコードを参照してください) )、そしてブラウザを更新するとurl(r'^facebook/', include('django_facebook.urls'))
、URLS.PYに、があるので、それは機能します(ログインのためにfbタブを開きます)。
私の問題は、リンクをクリックして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;
...
ありがとう。