Как передать js переменную с ajax в django? - PullRequest
0 голосов
/ 15 января 2020

Я передаю массив в json формате с ajax моим django представлениям. Я получаю статус 200, поэтому ПОСТ был сделан. Проблема в том, когда я пытаюсь отобразить данные, переданные в другом шаблоне. Я не получаю None в консоли. Благодарим за любую помощь. Переменная мне нужно передать в представления в массиве, содержащем jsons. Мне нужно передать его в мои представления, чтобы создать новый объект модели. Приведенный ниже код не работает, он возвращает None.

ajax function:
$.ajax({
    url: 'http://localhost:8000/order-confirmation',
    type: 'POST',
    data: {"array":array},
    processData: false,
    contentType: "application/x-www-form-urlencoded/json",
    dataType: "json",
    headers: {"X-CSRFToken":'{{ csrf_token }}'},
    success: function (result) {
        console.log(result.d);
    },
    error: function (result) {
        console.log(result);
    }
  });

urls:
path("order-confirmation", views.order_confirmation, name="confirmation")

views:
@csrf_exempt
def order_confirmation(request):
    array = request.POST.get('array[]')
    context = {
        "array":array
    }
    return render(request, 'main_templates/order_confirmation.html', context)

ШАБЛОН:

<div class="container">
      <table class="table table-bordered table-dark">
        <tbody>
          {% for row in seats_range %}
          <tr>
            <th scope="row" class="bg-danger">{{row}}</th>
            {% for number in seats_range %}
              <td class="text-center" style="width:5%;" row="{{row}}" onclick="change_bg(this)"><a href="#"></a>{{forloop.counter}}</a></td>
            {% endfor %} 
          </tr>
          {% endfor %} 
        </tbody>
      </table>
    </div>
    <a href="{% url 'confirmation' %}"><button type="submit" onclick="get_all_fields()">Click me</button></a>

1 Ответ

0 голосов
/ 16 января 2020

Способ, которым вы можете анализировать JSON, немного отличается. В функции вы можете сделать что-то вроде

#import json library

def order_confirmation(request):
  if request.method == 'POST':
    data = json.loads(request.body)
    print(data['array'])
    #process the data
    return HttpResponse(status=200) 
  else:
    return render(request, 'main_templates/order_confirmation.html')

. Это гарантирует, что переменная в ajax - это та, которая передается. Также проверьте свою печать, чтобы убедиться, что представление не является проблемой.
Также в шаблоне, я вижу, вы нигде не упоминали переменную с именем 'массив', которую вы использовали в вызове ajax. Я считаю, что это для переменной l oop, правильно заменить его

{% for row in array %}

, и тогда код должен работать. Вы должны увидеть свой шаблон в console.log

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