Глобальная переменная не обновляется в Django View - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь выполнить 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">&times</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;

    });

Как мне поступить отсюда, чтобы использовать обновленное значение на мой взгляд?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...