Ajax отправка данных дважды в views.py django - PullRequest
0 голосов
/ 18 июня 2020

У меня есть это form в index.html и две кнопки отправки при нажатии на одну кнопку с именем .graph-btn Я использую jquery и ajax для отправки данных с form на Django.

Код: index.html

 <form action="{% url 'Graph' %}" method="post">
                        {% csrf_token %}
                <table class="table table-striped table-dark" cellspacing="0">
                    <thead class="bg-info">
                    <tr>
                        <th>Company's Symbol</th>
                        <th>Current Price</th>
                        <th>View Current chart</th>
                        <th>Action</th>
                    </tr>
                    </thead>
                    <tbody>
                    {% for a,b in stocks %}
                    <tr>
                        <th scope="row" class="comp_name">{{ a }}</th>
                        <td>{{ b }}</td>
                        <td>
                            <input type="submit" class="btn graph-btn" name="_graph" value="View Graph">
                        </td>
                        <td>
                            <input type="submit" class="btn predict-btn" formaction="{% url 'Graph' %}" name="_predict" value="Predict Closing Price">
                        </td>
                    </tr>
                    {% endfor %}
                    </tbody>
                </table>
                </form>
<script>
    $(".graph-btn").click(function(e) {
    var $row = $(this).closest("tr");
    var $text = $row.find(".comp_name").text();
    var name = $text;
    console.log(name);
    $.ajax({
        type:'POST',
        dataType: "json",
        url:'{% url 'Graph' %}',
        data:{
            'text': name,
            'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]').val(),
        },
        success:function(json){
        },
        error : function(xhr,errmsg,err) {
        }
    });
});
</script>

здесь я хочу взять данные из th строки с именем .comp_name и передать данные в views.py в Django. Проблема: Ajax.

views.py

def graph(request):
    if request.method == 'POST':
        print("testing....")
        print(request.body)
        print(request.POST.get('text'))
        name = request.POST.get('text')
        context = {
            'name': name,
        }
        print(context)
        return render(request, 'StockPrediction/chart.html')
    else:
        return render(request, 'StockPrediction/greet.html')

Я использую инструкцию Print, чтобы проверить, все ли в порядке. проблема заключается в том, что когда я нажимаю на .graph-btn, он выдает мне два повторяющихся значения. Первый правильный, а второй - None. здесь

Помогите, пожалуйста.

1 Ответ

1 голос
/ 18 июня 2020

не следует использовать селектор классов jquery. используйте селектор идентификаторов («# id»). Теперь это происходит, потому что у вас есть более одной кнопки с классом graph-btn. Просто назначьте идентификаторы своим кнопкам для l oop ({% для a, b в наличии%})

...