Как получить доступ к переменным словаря jinja, которые отображаются через ajax вызов в Django - PullRequest
0 голосов
/ 04 апреля 2020

т. html:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset=\"utf-8"\>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
    <title>Title</title>
</head>
<body>
    <form method="post">
        <textarea id="t1" name="editor">{{c}}</textarea>
        <br>

        <button type="button" id="b1" onclick="calling();">press</button>
    </form>
    **{{c}}**
    **{{b}}**
    <script type="text/javascript">
        function calling(){
            $.ajax({
                type:'POST',
                url: "{% url 'test' %}",
                data: { csrfmiddlewaretoken: '{{ csrf_token }}' },
                success: function(){
                    alert("Hello");
                },
                error: function(){
                    alert("sorry");
                }
            });
        }
    </script>

</body>
<script
  src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
  integrity="sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8="
  crossorigin="anonymous"></script>
<script
  src="https://code.jquery.com/jquery-3.4.1.min.js"
  integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
  crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

</html>

Я хочу получить значение в {{c}} после вызова ajax.

tview.py:

from django.shortcuts import render
def home(request):
    return render(request, 't.html')

def test_view(request):
    print("hello")
    c = 2+3
    dict1 = {'c': c, 'b': 'hey'}
    return render(request, 't.html', dict1)

urls.py:

from django.conf.urls import url
from . import tview
urlpatterns = [
    url(r'^$', tview.home),
    url(r'^test', tview.test_view, name='test')
]

введите описание изображения здесь И когда я нажимаю кнопку ajax, вызов успешно выполнен и отображает содержимое словаря на chrome инструментах разработчика при предварительном просмотре ответа, но не отображается на главной странице. Это изображение.

1 Ответ

1 голос
/ 04 апреля 2020

Не уверен, что это лучший способ сделать это

<p id="x"></p> // replace **{{c}}** blank element hence it will impact anything

После успешного ajax вызова

success: function(data){ // data will hold whatever is returned from the url
           $("#x").html(data['c']); // This will populate the p element with your value
           alert("Hello");
         },

Вы также можете скрыть мент

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