请求只对循环中的第一个项有效?

2024-10-02 02:35:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了一个基本脚本来检测提交到我的网站的链接的like按钮(比如reddit),在我的视图中实例化一个函数并返回更新后的like计数。除了只对模板中for循环中的第一项有效外,代码的每一部分都可以正常工作。我做错了什么,它不能捕获超过第一个元素?在

我使用jQuery检测按钮按下的脚本如下所示:

<script>
$(document).ready(function() {
    $('#likes').click(function(){
        var link_id;
        link_id = $(this).attr("data-linkset_id")
        $.get('/uplink/', {linkset_id: link_id}, function(data){
            $('#vote_value').html(data);
            $('#likes').hide();
        });
    });
});
</script>

下面是关于实际按钮的循环:

^{pr2}$

这是我的函数视图.py它获取一个newlink对象并更改其like count,然后返回更新后的整数:

def uplink(request):
    context = RequestContext(request)
    link_id = None
        if request.method == 'GET':
        link_id = request.GET['linkset_id']

    likes = 0
    if link_id:
        thelink = newlink.objects.get(id=int(link_id))
        if thelink:
            likes = thelink.linklikes + 1
            thelink.linklikes = likes
            thelink.save()

    return HttpResponse(likes)

真的很感谢你的帮助。在


Tags: 函数脚本视图iddataifrequestlink
1条回答
网友
1楼 · 发布于 2024-10-02 02:35:33

ids在页面上必须是唯一的。只有一个元素可以具有某个id。将id属性和选择器更改为类或数据属性。在

$(document).ready(function() {
    $('[data-role=like_container]').on('click', '[data-action=like_button]', function(e){
        var $like_container = $(e.delegateTarget);
        var $like_button = $(e.currentTarget);
        var $vote_value = $like_container.find('[data-role=vote_value]');
        var link_id = $like_button.data("linkset_id");
        $.get('/uplink/', {linkset_id: link_id}, function(uplink_response){
            $vote_value.html(uplink_response);
            $like_button.hide();
        });
    });
});

^{pr2}$

相关问题 更多 >

    热门问题