Попытка вызвать представление Django с помощью AJAX
Я хочу вызывать представление Django (упомянутое ниже) с помощью AJAX каждую секунду, чтобы показать все сообщения в комнате
Мой JQuery
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
Вот мой код JQuery (в консоли браузера я продолжаю получать ошибку, говорящую, что $.ajax не определен)
<script>
$(document).ready(function(){
setInterval(function(){
$.ajax({
type: 'GET',
url : window.location.origin+"/room/{{room_name}}/"+username+"/",
success: function(response){
console.log(JSON.stringify(response));
},
error: function(response){
alert(JSON.stringify(response))
}
});
},1000);
})
</script>
Это мое представление Django
def room(request,room_name,current_user):
# print("[PROMPT] current_user :"+current_user)
try:
all_images = Image.objects.all()
all_users = Account.objects.all()
room_obj = ChatRoom.objects.get(room_name=room_name)
room_user_1 = room_obj.room_user_1
room_user_2 = room_obj.room_user_2
if room_user_1.username != current_user and room_user_2.username != current_user:
return redirect('chat')
room_messages = Message.objects.filter(room_name=room_obj)
current_user = Account.objects.get(email=str(request.user))
profile = Profile.objects.get(user=current_user)
user_following = []
friends = []
for a in profile.user_has_follower.all():
if a not in friends:
friends.append(a)
for b in profile.user_is_following.all():
if b not in friends:
friends.append(b)
query = profile.user_is_following.all()
for i in query:
user_following.append(i)
context={
'username':current_user.username,
'room_name':room_name,
'room_user_1_username':str(room_user_1.username),
'room_user_2_username':str(room_user_2.username),
'room_messages':room_messages,
'user_following':user_following,
'friends':friends,
'all_users':all_users,
'all_images':all_images,
}
return render(request,"chat.html",context)
except Exception as e:
log_exception(request,e,view_name="room")
return render(request,"error.html")
Это мой urlpattern для приведенного выше представления
urlpatterns = [
path('room/<str:room_name>/<str:current_user>/',views.room,name='room'),
]
Пробовали ли вы добавить jquery перед ajax запросом?
Это должно выглядеть следующим образом;
<script src="https://code.jquery.com/jquery-3.2.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script>
$(document).ready(function(){
setInterval(function(){
$.ajax({
type: 'GET',
url : window.location.origin+"/room/{{room_name}}/"+username+"/",
success: function(response){
console.log(JSON.stringify(response));
},
error: function(response){
alert(JSON.stringify(response))
}
});
},1000);
})
</script>
Кроме того, url : window.location.origin+"/room/{{room_name}}/"+username+"/", теперь не нужен. Может также использоваться как url : "/room/{{room_name}}/"+username+"/",