前提・実現したいこと
お世話になります。
メルカリのようなサイトを作っており、
今はメルカリのコメント機能のところを作っております
相手からのコメントをAjaxを使って自動的に取得したいです。
発生している問題
下のhtmlのscriptタグのソースコードは、以前授業でflaskを用いてメッセージアプリを作ったときに、
相手からのメッセージを自動で取得するために用いたものです。
これを今、私が作っているDjangoのアプリに取り入れ用としたところ、<script>タグ内の中の
{{to_user_id}}の部分,つまり相手側のidをどのように書けばいいのかがわからず、質問させていただきました。
自分側のidは request.user.idで取得できております。
どうぞよろしくお願いいたします。
html
<script> $(function(){ // 5秒間隔でget_new_messagesを実行 timer = setInterval("get_new_messages()", 5000); // 初期表示で画面の一番下に行く var scroll = (document.scrollingElement || document.body); scroll.scrollTop = scroll.scrollHeight; }); user_id = "{{ to_user_id }}"; function get_new_messages(){ $.getJSON("/message_ajax", { user_id: user_id }, function(data){ $('#message-form').before(data['data']); }); }; </script> <h3 class="text-center">商品名: {{product.product_name}}</h3> <div class="row"> {% for comment in comments%} {% if comment.user.id == request.user.id %} <div class="speech-bubble-my col-lg-4 offset-lg-7" > <!-- <p>{{ comment.user.username }}</p> --> <p>{{ comment.comment | linebreaksbr}}</p> </div> <div class="col-lg-1"> <p>{{ comment.user.username }}</p> </div> {% else %} <div class="col-lg-1"> <p>{{ comment.user.username }}</p> </div> <div class="speech-bubble-dest col-lg-4 " > <!-- <p>{{ comment.user.username }}</p> --> <p>{{ comment.comment | linebreaksbr}}</p> </div> <div class="col-lg-7"></div> {% endif %} {% endfor %} {% if user.is_authenticated %} <div class="col-4 offset-7" id="message-form"> <form method="POST"> {% csrf_token %} {{ comments_form.as_p }} <input type="submit" value="コメント送信"> </form> </div> {% endif %} </div>
メッセージを保管しているDB
product_idはユーザー登録した人が出品した商品のidです。
user_idはコメントを書いた人のidです。
該当のソースコード
models.py
class Comments(models.Model): comment = models.CharField(max_length=1000) user = models.ForeignKey('SellText.Users', on_delete=models.CASCADE) product = models.ForeignKey('SellText.Product',on_delete=models.CASCADE) objects = CommentsManager() class Meta: db_table='comments'
views.py
def post_comment(request, product_id): comments_form =forms.CommentForm(request.POST or None) # comment_product = Comments.objects.all() product = Product.objects.get(id=product_id) comments = Comments.objects.fetch_by_product_id(product_id) if comments_form.is_valid(): if not request.user.is_authenticated: raise Http404 comments_form.instance.product = product comments_form.instance.user = request.user comments_form.save() return redirect('SellText:post_comment',product_id=product_id) return render(request,'comment.html', context={ 'comments_form':comments_form, 'comments':comments, 'product':product } )
あなたの回答
tips
プレビュー