Ajax форма представления в Джанго - PullRequest
0 голосов
/ 30 мая 2019

Я использую devexpress для своего проекта, и я новичок в кодировании.У меня есть сетка данных с флажками и кнопка отправки.Когда я выбираю несколько флажков и нажимаю кнопку отправки, я хочу отобразить новую таблицу.Я получаю значения выбранных флажков, используя "getselectdRowKeys ()" с ajax.Но ничего не работает.1. При успешном прохождении предупреждения отображаются выбранные значения флажков.2. Если я использую protectDefault (), я получаю выбранные значения в моих представлениях django (filter_list), но в соответствии со сценарием, когда что-то публикуется, оператор "IF" должен выполняться в views.py, который inturn отображает "остальное "часть HTML.Это не происходит3. Есть ли другой альтернативный метод для достижения этой цели?Пожалуйста, поделитесь своими мыслями.

Спасибо

HTML-файл:

{% extends "base.html" %}
{% block body %}
{% if Vertical_header  %}
<script>
  $(document).ready(function(){
    $("#gridContainer").dxDataGrid({
        dataSource: {{Vertical_value|safe}},
        showBorders: true,
        keyExpr: "RGN",
        showBorders: true,
        selection: {
            mode: "multiple"
        },
        filterRow: {
            visible: true
        },
        columns: {{Vertical_header|safe}},
        showBorders: true
    });
  });
</script>
<div class="demo-container">
  <form id='my_form' method="post" action="{% url 'mytablesm' %}">
    {% csrf_token %}
      <div id="gridContainer"></div>
      <button type="submit" class="btn btn-primary btn-lg"><i class="fa fa-angle-double-down"></i></button>
  </form>

</div>
<script type="text/javascript">
  var csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();
  function csrfSafeMethod(method) {
        // these HTTP methods do not require CSRF protection
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }
    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrftoken);
            }
        }
    });function csrfSafeMethod(method) {
        // these HTTP methods do not require CSRF protection
        return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
    }
    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!csrfSafeMethod(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrftoken);
            }
        }
    });

  $(document).on('submit','#my_form',function data(e){
    e.preventDefault();
    var dataGrid = $("#gridContainer").dxDataGrid("instance");
    var selectedKeys = dataGrid.getSelectedRowKeys();
    $.ajax({
        type: 'POST',
        url: '{% url "mytablesm" %}',
        data:{
          regionwiselist:selectedKeys[0],
          'csrfmiddlewaretoken': "{{ csrf_token }}"
        },
        success: function (){
            // What has to be written here to pass the posted above data (selected keys) to my django view??
            // In my django view I have to get the posted data in regionwise list which inturn renders the same html page runs the else part of the HTML pager

        }
       });
});
</script>
<button onclick="data()" type="button" name="button"></button>

{% else %}
<h2>kd: {{filter_list|safe}}</h2>

{% endif %}
{% endblock %}

Views.py:

def mytablesm(request):
    if request.method == 'POST':
        filter_list = request.POST.get('regionwiselist')
        context={'filter_list':filter_list}
        return render(request, 'mytables.html', context)
    else:
        sbc = MTD.pdobjects.all()
        df = sbc.to_dataframe().reset_index(drop=True)
        df1=pandas.pivot_table(df,index='RGN',columns='Vertical',values=['Sales_Value'],aggfunc='sum').replace(numpy.nan,0)
        df1=df1.apply(lambda x: round(x, 2))
        df1.reset_index(inplace=True)
        dict1=df1.transpose().to_dict()
        dict=[]
        for k,v in dict1.items():
            dict.append(v)
        col=list(df1.columns)
        context={
                'Vertical_value':dict,
                'Vertical_header':col
        }
        return render(request, 'mytables.html', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...