构建 AJAX 视图以跟踪用户



我正在按照 Django 示例教程进行操作,无法关注用户。 我单击了关注按钮,但没有任何反应。我已经一遍又一遍地浏览了该部分,复制并粘贴了代码。它仍然不起作用。

这是我的看法

@ajax_required
@require_POST
@login_required
def user_follow(request):
user_id = require.POST.get('id')
action = request.POST.get('action')
if user_id and action:
try:
user = User.objects.get(id=user_id)
if action == 'follow':
Contact.objects.get_or_create(user_form=request.user,user_to=user)
else:
Contact.objects.filter(user_form=request.user,user_to=user).delete()
return JsonResponse({'status':'ok'})
except User.DoesNotExist:
return JsonResponse({'status':'ko'})
return JsonResponse({'status':'ko'})

这是我的 html 块中的 ajax

{% block domready %}
$('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');
// update total followers
var previous_followers = parseInt(
$('span.count .total').text());
$('span.count .total').text(previous_action == 'follow' ?
previous_followers + 1 : previous_followers - 1);
}
}
);
});
{% endblock %}

这是网址

**

#Users
url(r'^user/$', views.user_list, name = 'user_list'),
url(r'^users/follow/$', views.user_follow, name='user_follow'),
url(r'^users/(?P<username>[-w]+)/$', views.user_detail, name = 'user_detail'),

**

感谢您的帮助

视图应该是这个

@ajax_required
@require_POST
@login_required
def user_follow(request):
user_id = request.POST.get('id')
action = request.POST.get('action')
if user_id and action:
try:
user = User.objects.get(id=user_id)
if action == 'follow':
Contact.objects.get_or_create(user_from=request.user,user_to=user)
else:
Contact.objects.filter(user_form=request.user,user_to=user).delete()
return JsonResponse({'status':'ok'})
except User.DoesNotExist:
return JsonResponse({'status':'ko'})
return JsonResponse({'status':'ko'})

您将状态值"ok"拼写错误为"ko" 请将其更改为"确定">

except User.DoesNotExist:
return JsonResponse({'status':'ok'})
return JsonResponse({'status':'ok'})

我希望这是检查您的js代码时的一个简单错误。

最新更新