使用Django,jQuery和Ajax的投票系统

时间:2013-09-28 11:55:21

标签: jquery ajax django

我有点卡住,我正在尝试使用jQuery,Ajax和Django为我的博客添加一个投票系统,但我找不到最好的方法来做到这一点。

以下是我的问题:

  1. 如何在我的jQuery脚本中获取 {{blog.id}} ,该脚本必须作为.post方法中的参数发送?
  2. 在我的jQuery脚本中,如何找到用于更改投票图像的 {%static%} 路径?
  3. 到目前为止,这是我得到的......

    votes.html

    <a>Total: {{ total_votes }} </a>
    <input type="hidden" name="blog_id" value={{ blog.id }}>
    <div class="vote-buttons">
    {% if vote.up %}
        <img class="vote-up selected" src="{%static "assets/images/up_on.png"%}"/>
    {% else %}
        <img class="vote-up" src="{% static "assets/images/up_off.png" %}"/>
    {% endif %}
    {% if vote.down %}
        <img class="vote-down selected" src="{%static "assets/images/down_on.png"%}"/>
    {% else %}
        <img class="vote-down" src="{% static "assets/images/down_off.png" %}"/>
    {% endif %}
    </div>
    

    的jQuery / AJAX

    $(document).ready(function(){
        $('.vote-up, .vote-down').css('cursor', 'pointer');
        $('div.vote-buttons img.vote-up').click(function(){
            if($(this).hasClass('selected')){
                $.post('myurl', {params:params}, function(response){
                    $(this).removeAttr('src')
                       .attr('src',"...") # how to get the template {% static %} path?
                       .removeClass('selected');
                });
            }else{
                # when vote isn't selected
            }
        });
    });
    

2 个答案:

答案 0 :(得分:2)

{{ blog.id }}将成为名为blog_id的隐藏输入的值,因此您可以像这样找到它

$('input[name="blog_id"]').val();

通过查看其中一个图像的src可以找到静态路径。

尝试$('.vote-up').attr('src').replace('assets/images/up_off.png','');

您也可以创建javascript变量来为您处理模板中的值。

<script>
    var blog_id = {{ blog.id }};
    var static_path = "{% static "assets/images/" %}"
</script>

并引用这些值。

答案 1 :(得分:0)

我找到了解决方案,找到我使用的每个blog.id的唯一ID:

var id = $('input[name="blog_id"]', $(this)).val();

并且正如@DGS所说,找到我使用的静态路径:

<script>
    var static_path = "{% static "assets/images/" %}"
</script>