weixin_33688840 2017-03-30 13:53 采纳率: 0%
浏览 18

Django的喜欢按钮ajax

I'm been trying to create like button with ajax. In my model strain i have a field call user_like = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='strains_liked', blank=True)

This is my views.py

@login_required
@require_POST
def strain_like(request):
    strain_id = request.POST.get('id')
    action = request.POST.get('action')
    if strain_id and action:
        try:
            strain = Strain.objects.get(id=strain_id)
            if action == 'like':
                strain.user_like.add(request.user)
            else:
                strain.user_like.remove(request.user)
            return JsonResponse({'status': 'ok'})
        except:
            pass
    return JsonResponse({'status': 'ok'})

this is urls.py

url(r'^like/$', views.strain_like, name='like')

and this is my templates

{% block content %}
{{ strain.name }}

    {% with total_likes=strain.user_like.count user_like=strain.user_like.all %}
       <span class="count">
           <span class="total">{{ total_likes }}</span> like
       </span>
        <a href="#" data-id="{{ strain.id }}" data-action="{% if request.user in user_like %}un{% endif %}like" class="like">
        {% if request.user not in user_like %}
            Like
        {% else %}
            Unlike
        {% endif %}
        </a>
    {% endwith %}
{% endblock %}
<script>
var csrftoken = $.cookie('csrftoken');
function csrfSafeMethod(method) {
    // these HTTP methods do not require CSRF protection
    return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}
$.ajaxSetup({
    beforeSend: function(xhr, settings) {
        if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
            xhr.setRequestHeader("X-CSRFToken", csrftoken);
        }
    }
});
    $(document).ready(function () {
$('a.like').click(function(e){
            e.preventDefault();
            $.post('{% url "strains:like" %}',
             {
                 id: $(this).data('id'),
                 action: $(this).data('action')
             },
             function(data){
                if (data['status'] == 'ok')
                {
                    var previous_action = $('a.like').data('action');
                    $('a.like').data('action', previous_action == 'like' ? 'unlike' : 'like');
                    $('a.like').text(previous_action == 'like' ? 'unlike' : 'like');

                    var previous_likes = parseInt($('span.count .total').text());
                    $('span.count .total').text(previous_action == 'like' ? previous_likes + 1 : previous_likes - 1);
                }
            }
            );
     });
    })
</script>

when I click to like or unlike I have this error in developer tools

IMG with error

  • 写回答

1条回答 默认 最新

  • weixin_33743703 2017-06-04 19:16
    关注

    Your url for this action is r'^like/$'. But you send a request for /strains/like, that is not matched.

    评论

报告相同问题?

悬赏问题

  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号