0

ページの1つにあるチェックボックスを、データベースでいくつかの操作を行うビューにリダイレクトしようとしているDjangoアプリがあります(チェックボックスが表す情報に対応するブール列を切り替えます)。JavaScript リダイレクトでこのページを見つけました JavaScript/jQuery で別の Web ページにリダイレクトする方法は? しかし、どの提案も何もしていません。これが私の関連コードです。

マイ テンプレート

<script>
    function toggleCompletion(task_id){
        window.location.replace("/maintenance/tasks/{{ maintenance.id }}/toggleCompletion/"  str(task_id) + "/";
    }
</script>

...
...

<input type="checkbox" onclick="toggleCompletion({{ task.id }});" />

私のurlconf

urlpatterns = patterns('MaintenanceTracker.views',
url(r'^tasks/(?P<main_id>\d+)/toggleCompletion/(?P<task_id>\d+)/', 'toggleCompletion'),

テンプレートがリダイレクトしようとするビューは、現時点では事実上空です (HttpResponse にテスト文字列を含む戻り行があるだけです)。問題のチェックボックスをクリックすると、チェックボックスの状態が変化し、アラートでJSに入ることを確認しましたが、それ以上何も起こりません。また、見つけたページの推奨事項に従って、これを解決するために windows.location.href と location.href を変更しようとしました。ご協力ありがとうございます。さらに情報が必要な場合はお問い合わせください。提供いたします。

編集: abarnert の要求に従って、チェックボックスをクリックする前後のページ ソースを以下に示します。

前:

<head>
    <title>Task List</title>
    <style>
        table {
            margin-left: 100;
            margin-top: 15;
        }
        h1 {
            margin-left: 100;
            margin-top: 75;
        }
        h3 {
            margin-left: 100;
            margin-top: 50;
        }
        .indent {
            margin-left: 100;
        }
        .navigator {
            position:absolute;
            right:25px;
            top:15px;
        }
        .navigator-panel {
            position:absolute;
            right:25px;
            top:60px;
        }
        .user-info {
            position:absolute;
            left:25px;
            top:15px;
        }
        .logout {
            position:absolute;
            left:25px;
            top:60px;
        }
    </style>
    <script>
        //redirects to toggleCompletion view to toggle the value of one of the tasks isDone field
        function toggleCompletion(task_id){
            alert(task_id);
            location.href = "/maintenance/tasks/2/toggleCompletion/" + str(task_id) + "/";
            //window.location.replace("/maintenance/tasks/2/toggleCompletion/" + str(task_id) + "/");
        }
    </script>
    <h1>Task List for July 2013 Maintenance</h1>
</head>
<!--Create a User info panel-->
<p class="user-info">You're logged in as jgreen</p>
<form class="logout" method="post" action="/maintenance/logoutResolve/">
    <input type='hidden' name='csrfmiddlewaretoken' value='3vJTLWV0aIqAYfPIX2toBSPPFTVnE7Ll' />
    <input type="submit" value="Logout" />
</form>
<!--Display table of the Maintenances-->
<body>
    <table border="2">
        <tr>
            <th>Time</th>
            <th>Task Description</th>
            <th>Owner</th>
            <th>Notes</th>
            <th>Done?</th>
        </tr>

            <tr>
                <td>July 16, 2013, 10:25 a.m.</td>
                <td>Add a Task</td>
                <td>jgreen</td>
                <td>adlfjalkds</td>

                    <td><input id="1Checkbox" type="checkbox" value="False" onclick="toggleCompletion(1);" /></td>

            </tr>

            <tr>
                <td>July 16, 2013, 10:26 a.m.</td>
                <td>Weird Task</td>
                <td>jgreen</td>
                <td></td>

                    <td><input id="5Checkbox" type="checkbox" checked="yes" onclick="toggleCompletion(5);" /></td>

            </tr>

            <tr>
                <td>July 16, 2013, 10:28 a.m.</td>
                <td>Add another Task</td>
                <td>jgreen</td>
                <td>aaa</td>

                    <td><input id="2Checkbox" type="checkbox" value="False" onclick="toggleCompletion(2);" /></td>

            </tr>

            <tr>
                <td>July 16, 2013, 10:29 a.m.</td>
                <td>Add yet another Task</td>
                <td>jgreen</td>
                <td>asdfasdf</td>

                    <td><input id="3Checkbox" type="checkbox" value="False" onclick="toggleCompletion(3);" /></td>

            </tr>

            <tr>
                <td>July 16, 2013, 12:21 p.m.</td>
                <td>The Last Task</td>
                <td>jgreen</td>
                <td></td>

                    <td><input id="4Checkbox" type="checkbox" value="False" onclick="toggleCompletion(4);" /></td>

            </tr>

    </table>
    <div class="indent" style="width:20%;overflow:hidden;margin-top:2px">
        <form style="float:left" method="post" action="/maintenance/index/">
        <input type='hidden' name='csrfmiddlewaretoken' value='3vJTLWV0aIqAYfPIX2toBSPPFTVnE7Ll' />
            <input type="submit" value="Back" />
        </form>
        <form style="" method="post" action="/maintenance/tasks/2/addTask/">
        <input type='hidden' name='csrfmiddlewaretoken' value='3vJTLWV0aIqAYfPIX2toBSPPFTVnE7Ll' />
            <input type="submit" value="Add Task" />
        </form>
    </div>
</body>

後:

<head>
    <title>Task List</title>
    <style>
        table {
            margin-left: 100;
            margin-top: 15;
        }
        h1 {
            margin-left: 100;
            margin-top: 75;
        }
        h3 {
            margin-left: 100;
            margin-top: 50;
        }
        .indent {
            margin-left: 100;
        }
        .navigator {
            position:absolute;
            right:25px;
            top:15px;
        }
        .navigator-panel {
            position:absolute;
            right:25px;
            top:60px;
        }
        .user-info {
            position:absolute;
            left:25px;
            top:15px;
        }
        .logout {
            position:absolute;
            left:25px;
            top:60px;
        }
    </style>
    <script>
        //redirects to toggleCompletion view to toggle the value of one of the tasks isDone field
        function toggleCompletion(task_id){
            alert(task_id);
            location.href = "/maintenance/tasks/2/toggleCompletion/" + str(task_id) + "/";
            //window.location.replace("/maintenance/tasks/2/toggleCompletion/" + str(task_id) + "/");
        }
    </script>
    <h1>Task List for July 2013 Maintenance</h1>
</head>
<!--Create a User info panel-->
<p class="user-info">You're logged in as jgreen</p>
<form class="logout" method="post" action="/maintenance/logoutResolve/">
    <input type='hidden' name='csrfmiddlewaretoken' value='3vJTLWV0aIqAYfPIX2toBSPPFTVnE7Ll' />
    <input type="submit" value="Logout" />
</form>
<!--Display table of the Maintenances-->
<body>
    <table border="2">
        <tr>
            <th>Time</th>
            <th>Task Description</th>
            <th>Owner</th>
            <th>Notes</th>
            <th>Done?</th>
        </tr>

            <tr>
                <td>July 16, 2013, 10:25 a.m.</td>
                <td>Add a Task</td>
                <td>jgreen</td>
                <td>adlfjalkds</td>

                    <td><input id="1Checkbox" type="checkbox" value="False" onclick="toggleCompletion(1);" /></td>

            </tr>

            <tr>
                <td>July 16, 2013, 10:26 a.m.</td>
                <td>Weird Task</td>
                <td>jgreen</td>
                <td></td>

                    <td><input id="5Checkbox" type="checkbox" checked="yes" onclick="toggleCompletion(5);" /></td>

            </tr>

            <tr>
                <td>July 16, 2013, 10:28 a.m.</td>
                <td>Add another Task</td>
                <td>jgreen</td>
                <td>aaa</td>

                    <td><input id="2Checkbox" type="checkbox" value="False" onclick="toggleCompletion(2);" /></td>

            </tr>

            <tr>
                <td>July 16, 2013, 10:29 a.m.</td>
                <td>Add yet another Task</td>
                <td>jgreen</td>
                <td>asdfasdf</td>

                    <td><input id="3Checkbox" type="checkbox" value="False" onclick="toggleCompletion(3);" /></td>

            </tr>

            <tr>
                <td>July 16, 2013, 12:21 p.m.</td>
                <td>The Last Task</td>
                <td>jgreen</td>
                <td></td>

                    <td><input id="4Checkbox" type="checkbox" value="False" onclick="toggleCompletion(4);" /></td>

            </tr>

    </table>
    <div class="indent" style="width:20%;overflow:hidden;margin-top:2px">
        <form style="float:left" method="post" action="/maintenance/index/">
        <input type='hidden' name='csrfmiddlewaretoken' value='3vJTLWV0aIqAYfPIX2toBSPPFTVnE7Ll' />
            <input type="submit" value="Back" />
        </form>
        <form style="" method="post" action="/maintenance/tasks/2/addTask/">
        <input type='hidden' name='csrfmiddlewaretoken' value='3vJTLWV0aIqAYfPIX2toBSPPFTVnE7Ll' />
            <input type="submit" value="Add Task" />
        </form>
    </div>
</body>
4

1 に答える 1