Представление Django не вызывается при выполнении вызова AJAX - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь настроить вызов AJAX, чтобы вызвать представление Django, выполнить некоторые вычисления и затем вернуть результат на мою страницу html. К сожалению, вид, кажется, не достигнут. Не уверен, что не так, но у меня очень ограниченный AJAX опыт. Идея состоит в том, что когда мой слайдер видит изменение в значении, он запускает вызов AJAX. Триггер, кажется, работает, поскольку он отображает мое всплывающее окно с предупреждением. Но это все, больше ничего не происходит. Не могли бы вы помочь?

Вот мой HTML / AJAX код:

 <div class="slider-wrapper">
    <span>Option 1 Imp. Vol.</span>
    <input class="toChange" id="rangeInput" name="rangeInput" type="range" value="{{Sigma}}" min="0" max="150" step="0.1" oninput="amount.value=rangeInput.value" />
    <input class="toChange" id="amount" type="number" value="{{Sigma}}" min="0" max="150"  step="0.1"oninput="rangeInput.value=amount.value" />
  </div>

<label>Ajax Test:</label>
<span id="Atest">

 <script type="text/javascript">
   function inputChange () {
        var Sigma = document.getElementById("rangeInput").value;
        alert();
        $.ajax({
                url: '/finance/templates/optionstrategies/',
                type: 'POST',
                data: {'Sigma': Sigma,
                },
                //dataType: "json",
                success: function(optionVal) {
                document.getElementById("Atest").innerHTML = optionVal;
                }
        }); 
    }

    $(".toChange").change(inputChange); 
 </script>

А вот мой view.py:

def optionStrategies(request):
    errors=''
    if request.method == 'POST' and request.is_ajax():
        print('ok')
        Type = request.POST.get('Type')
        V = request.POST.get('V')
        Q = request.POST.get('Q')
        S = request.POST.get('S')
        K = request.POST.get('K')
        r = request.POST.get('r')
        t = request.POST.get('t')
        Sigma = request.POST.get('rangeInput')

        BS = BlackScholes(Type = 'Vanilla', S = float(S), K = float(K), sig = float(Sigma)/100, r = float(r)/100, t = float(t)/365)
        optionVal = BS[0]
        print(optionVal)

        optionVal = json.dumps(optionVal)
        return HttpResponse(optionVal, content_type='application/json')

Edit1: добавление код urls.py:

urlpatterns = [
    url(r'^$',views.home, name="homepage"),
    path('optionstrategies/', views.optionStrategies, name="optionstrategies"),
    path('impliedvolatility/', views.impliedVolatilityHtml, name="impliedvolatility"),

1 Ответ

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

Проблема была с URL. Замена '/ finance / templates / optionstrategies /' на '/ optionstrategies /' сделала свое дело.

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