ページの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>