一次又一次地在Django中调用视图

时间:2018-07-19 18:17:28

标签: django django-templates

假设我的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的新手。请建议我一个更好的方法。也许我可以将更改保存在一个数组中,然后在提交时将其传递给视图以进行查看或类似的操作,并且效率更高。

1 个答案:

答案 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用法的一些疑问,并希望我正确理解了您的问题。