Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ajax遵循和取消遵循_Python_Ajax_Django - Fatal编程技术网

Python Django ajax遵循和取消遵循

Python Django ajax遵循和取消遵循,python,ajax,django,Python,Ajax,Django,我有一个follower系统,它是用ajax执行的。问题是跟随器按钮不工作。它没有点击,并且用户数量在一天结束时不会增加。我的代码在下面 模板 {% with objects=user.followers.count %} <span class="count"> <span class="total"> {{ objects }} </span> follower{{ objects

我有一个follower系统,它是用ajax执行的。问题是跟随器按钮不工作。它没有点击,并且用户数量在一天结束时不会增加。我的代码在下面

模板

    {% with objects=user.followers.count %}
      <span class="count">
      <span class="total">
        {{ objects }}
      </span>
        follower{{ objects|pluralize }}
      </span>
      <a href="#" data-id="{{ user.id }}" data-action="{% if request.user in user.followers.all %}un{% endif %}follow" class="follow button">
        {% if request.user not in user.followers.all %}
        Follow
        {% else %}
        Unfollow
        {% endif %}
      </a>

{% block query %}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src=" http://cdn.jsdelivr.net/jquery.cookie/1.4.1/jquery.cookie.min.js "></script>
<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.follow').click(function(e){
    e.preventDefault();
    $.post('{% url "user_follow" %}',
    {
      id: $(this).data('id'), action: $(this).data('action')
    }, function(data){
          if (data['status'] == 'ok') {
            var previous_action = $('a.follow').data('action');
            // toggle data-action $('a.follow').data('action',
            previous_action == 'follow' ? 'unfollow' : 'follow'); // toggle link text
    $('a.follow').text(
         previous_action == 'follow' ? 'Unfollow' : 'Follow');
    // update total followers
    var previous_followers = parseInt(
    $('span.count .total').text());
    $('span.count .total').text(previous_action == 'follow' ? previous_followers + 1 : previous_followers - 1);
    } }
    ); });
}); </script>

{% endblock %}
进一步的代码将提供的要求,任何帮助将是爱

def user_follow(request):
    user_id = request.POST.get('id', None)
    action = request.POST.get('action', '')

    FOLLOW_ACTION = 'follow'
    UNFOLLOW_ACTION = 'unfollow'

    if request.user.is_anonymous:
        return JsonResponse({
            'status':'ko',
            'message': 'You must login'}
        )

    if action not in [FOLLOW_ACTION, UNFOLLOW_ACTION]:
        return JsonResponse({
            'status':'ko',
            'message': 'Unknown action {}'.format(action)}
        )

    try:
        user = User.objects.get(id=user_id)
        if action == UNFOLLOW_ACTION:
            Contact.objects.filter(user_from=request.user,user_to=user).delete()
            return JsonResponse({
                'status':'ok'
                })
        else:
            contact, created = Contact.objects.get_or_create( user_from=request.user, user_to=user)
            return JsonResponse({
                'status':'ok',
                'message': 'Following id : {}'.format(contact.id)
            })


    except User.DoesNotExist:
        return JsonResponse({
            'status':'ko'
            'message': 'user id: does not exist: {}'.format(user_id)
        })
您混淆了跟进和取消跟进,当操作取消跟进时,您将创建联系人

模板:

{% if request.user != user %}
  <a> Follow ....
{% endif %}
{%if request.user!=user%}
跟随。。。。
{%endif%}

最好的了解方法是在javascript中的各个位置使用
控制台。在python控制器中的各个位置使用
日志和
打印
。在logIt中看到的任何错误都不会告诉您错误,它会告诉您到达了代码的哪些部分以及变量的值
console.log
是javascript的“打印”功能。你建议我在每行之后使用console.log或printTry哪个部分,最坏的情况下可能需要1分钟。很难说,请使用F12检查浏览器我已经实现了它,但没有点击下面的按钮,并且
“消息”:“用户id:不存在:{}”。格式(用户id)
在终端
'message':'Following id:{}中保留给定的无效索引器。format(contact.id)AttributeError:'tuple'对象没有属性'id'
已修复。我对你感激不尽。谢谢,我认为这是werid,用户可以真正跟随自己我希望跟随按钮是隐藏的基于我的代码
{% if request.user != user %}
  <a> Follow ....
{% endif %}