2016-08-27 16 views
1

私はアプリケーションを作成し、djangoフレームワークを使用してcomment関数を実装しました。javascript(Django)でログインユーザー情報を取得する方法はありますか?

私はGETPOSTコメントにjquery & ajaxを使用しています。

今、EditDeleteの機能を追加します。

enter image description here

あなたが画像で見ることができるように、editdeleteボタンがあります。私がしようとしているのは、現在のユーザーが投稿したコメントのボタンだけを表示することです。

これは私のの一部です。私のcomments APIからのコメントを得る。

$.ajax({ 
    url: commentURL, 
    type: "GET", 
    success: function(data){ 
     var numOfComments = data.length; 
     $(commentCountElement).html(numOfComments); 

     data.forEach(function(comment){ 
      /* Get data from API results */ 
      var commentUsername = comment.author_name; 
      var commentContent = comment.content; 
      var commentCreatedAt = comment.created_at; 
      var commentID = comment.id; 

      /* Create html li */ 
      var listElement = $("<li>").addClass("comment-box"); 

      /* Create div comment-meta */ 
      var commentMetaDiv = $("<div>").addClass("comment-meta"); 
      $(commentMetaDiv).append($("<span>").text(commentUsername)); 
      $(commentMetaDiv).append($("<span>").addClass("date").text(commentCreatedAt)); 

      /* Create div comment-content */ 
      var commentContentDiv = $("<div>").addClass("comment-content"); 
      $(commentContentDiv).text(commentContent); 

      /* Append */ 
      $(listElement).append(commentMetaDiv); 
      $(listElement).append(commentContentDiv); 
      $(commentUnorderedListElement).append(listElement); 
     }); 
    }, 
    error: function(data){ 
     console.log(textStatus); 
     return false; 
    } 
}); 

は今、私はその結果に応じてボタンを追加できるようにcomment.author_nameと、現在のログインuserを比較する必要があります。しかし、の情報をjsにどうやって得ることができるのか分かりません。

あなたの助けが必要です。おかげで、あなたのテンプレートで

答えて

0

<script> 
    var reply_name = {{ request.user.user_name }}; 
    get_comment(repay_name) #call what you want using js 
</script> 
2

私はあなたがセッション認証を使用していると仮定。

これはいくつかの方法で実行できます。

まず、あなたはこのような何かを行うことによって、あなたのcomments APIに余分なフィールドを追加することができます。

comments['editable'] = request.user.user_name == comment.author_name 

それがTrueの場合、ユーザーはその逆のコメントを編集することができます。私はこれがより良い方法だと信じています。

第二の方法は、ユーザーがジャンゴ、そこに比較するためのアクセスを得るスクリプト内で直接である:

<script> 
    var editable = comment.author_name == {{ request.user.user_name }} 
</script> 

は、これは良い方法ではありません。あなたがjqueryとdjango変数を混ぜているからです!スクリプトが別のファイルにある場合、スクリプトはまったく動作しません。

だから、私は最初の方法で行くだろう。

希望します。

+0

質問:どの方法でコメントを削除するのが望ましいですか? 1. 'CommentDeleteView'を作成します。2.' ajax'を使用します。 – user3595632

+0

あなたの好みやデザインによって異なります。現代のWebのユーザーは、操作がページを再ロードする必要のない 'SPA'にすでに慣れているので、私は' ajax'と一緒に行くだろう。だから、私は 'ajax'を勧めます –

関連する問題