假设我的Django模板中有一个按钮列表,并且我想在单击该按钮时更改数据库中的变量。这是该模板的代码。
{% for i in data %}
<tr>
<td>{{ i.rollno }}</td>
<td>{{ i.name }}</td>
<td>
<a class='btn btn-danger' href='add/{{i.id}}/{{stri}}'> {{stri}} </a>
</td>
</tr>
{% endfor %}
此模板的jQuery代码:
$(document).ready(function(){
$(".btn").click(function(){
$(this).toggleClass('btn-success');
$(this).toggleClass('btn-danger');
});
});
上面代码中的按钮是一个切换(打开/关闭)按钮。因此,在jquery中,我编写了代码以将其打开/关闭。 默认情况下,所有按钮均处于关闭状态。
每次单击按钮然后返回此URL时,我都会调用一个视图。但是,这会将每个按钮切换为默认状态,即关闭状态。而且由于每次加载同一页面时,单击后退按钮都无法到达上一页,但是在我调用该视图的次数中却无法获得同一页面。
每个按钮都属于数据库中的IntegerField()。
我是Django的新手。请建议我一个更好的方法。也许我可以将更改保存在一个数组中,然后在提交时将其传递给视图以进行查看或类似的操作,并且效率更高。
答案 0 :(得分:0)
首先,您可能想使用表格。由于您将要存储数据
在您的dbms中,使用“ POST”。您上面的代码激活了每个按钮,因为您没有指定要按下的按钮。因此,为防止这种情况发生,您可以如下所示进行操作,以创建一个onclick事件,该事件仅将ID和字符串发送到相应的URL,或者以django的方式进行
“ {%url'urlname'id = id,stri = stri%}”,
<form id="activate" method="POST">
{% for i in data %}
<tr>
<td>{{ i.rollno }}</td>
<td>{{ i.name }}</td>
<td>
<a class='btn btn-danger' id="activateButton" onclick="activate({{i.id}}, {{stri}})"> {{stri}} </a>
</td>
</tr>
{% endfor %}
</form>
function activate(id, string){
if($('#activateButton').hasClass('btn-success');
$('#activateButton').toggleClass('btn-danger');
}else{
$('#activateButton').toggleClass('btn-success');
}
var url = 'add/{{i.id}}/{{str}}'
$('#change').attr('action', url)
$('#change').submit()
});
您可以根据其访问方式在视图中访问id和string参数。 对于这种情况,我假设您正在使用url参数。所以您的视图应该像这样
def activate(request, id, strin):
# view code
#store id and string into dbms
我希望这有助于澄清对django用法的一些疑问,并希望我正确理解了您的问题。