Я пытаюсь выполнить oop через пользователей по определенному запросу AJAX и назначить другое значение глобальной переменной, как только я получу данные, возвращенные в мое представление django из AJAX. Внутри оператора if переменная печатается правильно, однако, когда я пытаюсь получить к нему доступ в контекстном словаре представления, она сохраняет свое старое значение и не обновляет.
views.py
def view_profile(request):
g = Friend.objects.all()
j = forms.FriendForm()
s = forms.SearchForm()
h = UserProfileInfo.objects.all()
global term
term = []
global r
r = []
global e
e = h[0]
global friend_arr
friend_arr = []
global messages
messages = []
if len(g) != 0:
for x in g:
if x.user == request.user.username:
friend_arr.append(x)
else:
pass
if request.method == "POST":
s = forms.SearchForm(request.POST)
j = forms.FriendForm(request.POST)
if request.is_ajax():
if list(request.POST)[0] == 'friend':
friend = request.POST['friend']
for x in range(0, (len(h) - 1)):
if str(h[x]) == str(friend):
e = h[x]
break
else:
pass
elif list(request.POST)[0] == 'to_be_messaged':
t6t6 = request.POST['to_be_messaged']
new_arr = t6t6.split('+')
global action
global user
action = new_arr[0]
user = new_arr[1]
messages = MessageModel.objects.filter(user=request.user.username, to_user=user)
else:
d = MessageModel.objects.get_or_create(
user=request.user.username,
to_user=user,
message=request.POST['message_text'],
)[0]
d.save()
# return HttpResponse('')
print(e)
if s.is_valid():
term = ArtistCount.objects.filter(user__icontains=(s.cleaned_data['friend']))
if j.is_valid() and request.POST.get('sReq') is not None:
t = Friend.objects.get_or_create(
user=request.user.username,
friend=request.POST.get('sReq'),
)[0]
t.save()
r = Friend.objects.get_or_create(
user=request.POST.get('sReq'),
friend=request.user.username,
)[0]
r.save()
args = {'g': g, 'j': j, 's': s, 'term': term, 'r': r, 'e': e, 'friend_arr': friend_arr, 'messages': messages}
return render(request, 'app1/friends.html', args)
Здесь переменная, которую я пытаюсь обновить, e
.
Template
<div id="id01" class="w3-modal">
<div class="w3-modal-content w3-card-4">
<header class="w3-container w3-teal">
<span onclick="document.getElementById('id01').style.display='none'"
class="w3-button w3-display-topright">×</span>
<h1><img src="https://cdn.discordapp.com/attachments/596570958601388078/596670448918593550/Screenshot_2019-07-05_at_5.24.37_PM.png" width="50" height="50"></h1>
</header>
<div class="jumbotron">
<h3>User: {{ e }}</h3>
<h3>Favourite Song: {{ e.fav_song }}</h3>
<h3>Favourite Artist: {{ e.fav_artist }}</h3>
<br><br>
<h3>Most Played Artist: {{ e.most_played_artist }}</h3>
<h3>Most Played Song: '{{ e.most_played_song }}'</h3>
</div>
<footer class="w3-container w3-teal">
<p><center>GENSIC PROFILES</center></p>
</footer>
</div>
</div>
AJAX Call
$(document).on('submit', '#Tops', function(e){
e.preventDefault();
$.ajax({
type: 'POST',
url: '{% url 'app1:view_profile' %}',
data: {
message_text:$('#fname').val(),
csrfmiddlewaretoken:$('input[name=csrfmiddlewaretoken]').val()
},
success: function() {
$('#test_div').append('<div class="mukesh leonidas"><p>' + $('#fname').val() + '</p></div>');
document.getElementById('fname').value = '';
}
});
//return false;
});
Как мне поступить отсюда, чтобы использовать обновленное значение на мой взгляд?