2017-07-28 2 views
0

私はDjango By Exampleチュートリアルに従っており、ユーザに従うことができません。私はフォローボタンをクリックしますが、何も起こりません。私はそのセクションを何度も繰り返し、コードをコピーして貼り付けました。それでも動作しません。ここで ユーザをフォローするAJAXビューを構築する

は、私の見解

@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ブロックでアヤックスである

{% 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 %} 

これはURL

**

です
#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'), 

**

ご協力いただきありがとうござい

+0

べき場所のgetあなたがデータを初期化要求(「ID」)とデータ(「アクション」)のためのビューがありますか?ポストビューにブレークポイントを設定すると、受信したデータは何ですか?ちょうどあなたのjavascriptコンソールで、あなたのビューメソッドが呼び出されていることを確認して、 'ko'ステータスが返されたことがわかりますか? – dirkgroten

+0

@dirkgroten私はあなたの質問をよく理解していません。あなたはもう少し明示的になりますか? –

+0

あなたのスクリプトは 'id:$(this).data( 'id')'を投稿しています、 '$(this).data( 'id')'は最初に? $(this)はあなたのHTMLページの 'a.follow'要素を指しているので、私はそれがどのように定義されていて、どのテンプレートがそのテンプレートをレンダリングしているのだろうと思います。私はあなたの 'user_follow'メソッドで' ko'のステータスを返すので、データ( 'id')とデータ( 'action')は空であると思っています。ブラウザの '' ko''が返されます) – dirkgroten

答えて

-1

をあなたは私が

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

にそれを変更してください 'KO' に 'OK' あなたのステータス値をスペルミスしていますあなたのjsコードをチェックインしている間、簡単な間違いだったと思います。 ?

+0

私はそれをしましたが、問題を解決しないと私はチュートリアルの本をチェックし、それは ' –

0

ビューは、この代わりに

@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'}) 
関連する問題