Используйте django view для отправки javascript переменной как POST-запроса - PullRequest
1 голос
/ 26 марта 2020

Дорогие все после нескольких дней боев, я решил попросить вас о помощи, так как django новичок я ..

Я пытался следовать этому Звонить Django на HTML нажатии кнопки безуспешно.

Область: Я хочу использовать представление django для отправки переменной, сгенерированной в одном сценарии js, который имеет формат json. Мне нужно отправить эти данные на внешний сервер, и, следовательно, я подумал, что мне потребуется запрос POST в представлениях (еще не включены). Чтобы все пошло как по маслу и началось откуда-то, я подумал, что после нажатия кнопки «Отправить» я могу загрузить новую страницу (points. html) только для того, чтобы увидеть, что данные восстанавливаются в views.py.

main html template (web_map. html):

    {% load staticfiles %}

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>webmap</title>
  </head>
  <body>
    <form id="options-form" autocomplete="off">
      <label><input type="radio" name="interaction" value="draw" checked> Draw<br></label>
      <label><input type="radio" name="interaction" value="modify"> Modify<br></label>
    </form>

    <form action="sendJson" method="GET">
    {% csrf_token %}
    <div id="submit-button">
      <button class="btn btn-primary btn-sm" type="submit">Submit</button>
    </div>
    </form>

    <script src="{% static 'dist/main.js' %}"></script>

  </body>
</html>

My main. js:

var submitBtn = document.getElementById('submit-button');

submitBtn.addEventListener("click", function() {
    var pointsJson = submitPoints(vectorPoint);
    $.ajax({
        type: "GET",
        contentType: "application/json",
        url: 'sendJson',
        data: pointsJson,
        dataType : "json",
        success: function(result) {
            console.log(result);
        }
    })
}
);

До этого я получаю мне нужны данные, но я не знаю, как отправлять баллы Json в django представление. Это данные, которые мне также необходимо отправить на внешний сервер.

urls.py:

from django.urls import path
from django.views.generic import TemplateView

from . import views

urlpatterns = [
    path('',
         TemplateView.as_view(template_name='web_map.html'), name='web_map'),
    path('sendJson', views.sendJson),
]

views.py:

from django.shortcuts import render
import json

def web_map(request):
    return render(request, 'web_map.html')


def sendJson(request):
    points = {"point1": "123"}
    return render(request, 'points.html', points)

баллов. html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Points</title>
  </head>
  <body>
      {{ points }}
  </body>
</html>

К сожалению, в настоящий момент я в замешательстве и буду очень признателен за любые подсказки по следующим вопросам:

  1. Как получить свои очки Json var в представлениях.
  2. Как я могу отправить его на внешний сервер, когда пользователь нажимает кнопку отправки?

Надеюсь, я достаточно аналитичен, и мой пример кода поможет. Большое спасибо за ваше время!

РЕДАКТИРОВАТЬ

Если вы пытаете код достаточно, он признается. Я нашел несколько ошибок и отредактировал код выше. К сожалению, до сих пор не решены проблемы.

Что касается использования правильного шаблона после нажатия кнопки отправки:

web_map. html: тег действия был перемещен в тег формы вместо будучи прикрепленным к кнопке.

Для восстановления переменной из индекса. js в views.py я добавил вызов ajax. До сих пор успеха не было .. и до сих пор остается вопрос о том, как перенести данные (при условии, что я получаю их в моем views.py) на внешний сервер.

...