Джанго: Отправить JS dict Django View - PullRequest
0 голосов
/ 17 декабря 2018

Итак, у меня есть JS dict, и я хочу отправить его в мой Django View, потому что мне нужно использовать его для вызова функции с использованием библиотеки python.

Мне нужно отправить: dir_charge в моем Django View, но это внутри JS-функции с именем culqi(), которая отвечает за создание поля source_id в dict, и поля email:

js:

Эта функция culqi() захватывает данные из формы в конце вопроса.

<script>

   function culqi() {
      if (Culqi.token) { // ¡Objeto Token creado exitosamente!
      var dir_charge = {
              amount: 24,
              currency_code: "PEN",
              email: Culqi.token.email,
              source_id: Culqi.token.id
                    };
      } else { // ¡Hubo algún problema!
              // Mostramos JSON de objeto error en consola
              console.log(Culqi.error);
              alert(Culqi.error.user_message);
             }
      };

</script>

JS генерируется, когда пользователь нажимает на эту кнопку:

html:

<button id="buyButton">Pagar</button>

Благодаря этому другому JS:

<script>

            $('#buyButton').on('click', function (e) {
                // Abre el formulario con la configuración en Culqi.settings
                Culqi.open();
                e.preventDefault();
            });

</script>

Когда пользователь нажимает кнопку, появляется эта форма (она не жестко закодирована в HTMl, но вызывается из внешней библиотеки JS):

<form class="form">
    <div class="form-row">
        <div class="col col-12">
            <div class="form-group">
                <div class="input">
                    <input name="cardNumber" autocomplete="cc-number" type="tel" maxlength="19" class="input-card"
                           data-mask="#### #### #### ####" data-previous-value="">
                </div>
                <label for="cardNumber" class="">Número de Tarjeta</label>
                <div class="brand"></div>
            </div>
        </div>
    </div>
    <div class="form-row">
        <div class="col col-6">
            <div class="form-group">
                <div class="input">
                    <input name="cardExp" autocomplete="cc-exp" type="tel" maxlength="5" class="input-card"
                           data-mask="##/##" data-previous-value="">
                </div>
                <label for="cardExp" class="">Mes / Año</label>
            </div>
        </div>
        <div class="col col-6">
            <div class="form-group">
                <div class="input">
                    <input name="cardCVV" autocomplete="cc-csc" type="tel" maxlength="3" class="input-card"
                           data-mask="###" data-previous-value="">
                </div>
                <label for="cardCVV" class="">CVV</label>
                <a>(?)</a>
            </div>
        </div>
    </div>
    <div class="form-row" style="display: none;">
        <div class="col col-12">
            <div class="form-group">
                <div class="input">
                    <select name="custom-cuotas" id="" class="">
                        <option value="" selected="selected" disabled="disabled" hidden="hidden">Pagar en Cuotas
                        </option>
                        <option value="1">Sin Cuotas</option>
                        <option value="2">2 Cuotas</option>
                        <option value="4">4 Cuotas</option>
                        <option value="6">6 Cuotas</option>
                        <option value="8">8 Cuotas</option>
                        <option value="10">10 Cuotas</option>
                        <option value="12">12 Cuotas</option>
                        <option value="3">3 Cuotas</option>
                        <option value="5">5 Cuotas</option>
                        <option value="7">7 Cuotas</option>
                        <option value="9">9 Cuotas</option>
                        <option value="24">24 Cuotas</option>
                        <option value="48">48 Cuotas</option>
                    </select>
                </div>
            </div>
        </div>
    </div>
    <div class="form-row">
        <div class="col col-12">
            <div class="form-group">
                <div class="input">
                    <input name="cardEmail" autocomplete="email" type="email" class="input input-card">
                </div>
                <label for="cardEmail" class="">Correo Electrónico</label>
            </div>
        </div>
    </div>
    <div class="form-pay">
        <button type="submit" class="btnAction">
            <span>Pagar </span>
            <span class="payText PEN">.24</span>
            <small>PEN</small>
        </button>
    </div>
</form>

ОБНОВЛЕНИЕ 1:

urls.py:

из пути импорта django.urlsот .импорт просмотров

app_name = 'cart'

urlpatterns = [
    path('', views.cart_detail, name = 'cart_detail'),
    path('full_remove/<int:cart_item_id>/', views.full_remove, name = 'full_remove'),
]

views.py

def cart_detail(request):
    print(amount)
    print(currency_code)
    print(email)
    print(source_id)
    pass

1 Ответ

0 голосов
/ 17 декабря 2018

Как уже говорилось в комментарии, вас может заинтересовать Ajax, надеясь, что вы используете jQuery, вы можете использовать что-то вроде

<script>

   function culqi() {
      if (Culqi.token) { 
       $.ajax({
              url: "your_url",
              data: {
              amount: 24,
              currency_code: "PEN",
              email: Culqi.token.email,
              source_id: Culqi.token.id
           }
              }).done(function() {
               // do something with scess
               $( this ).addClass( "done" );
              });
      } else { 
              console.log(Culqi.error);
              alert(Culqi.error.user_message);
             }
      };

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