Как я могу использовать переменные Django в моем javascript / client-logi c? - PullRequest
2 голосов
/ 27 мая 2020

Я пытаюсь сериализовать набор запросов, чтобы использовать его в javascript для заполнения диаграммы. Проблема в том, что он не позволяет мне сериализовать объект. Если я удалю queryset, он сработает, но мне нужен набор запросов в контексте, чтобы использовать его и для рендеринга Django.

Итак, как я могу использовать переменные с Django для рендеринга html divs и javascript для рендеринга диаграммы? (в данном случае это холст, почему мне нужны переменные на сайте javascript).

views.py где currency и dynascore - две пользовательские переменные и queryset - это запрос модели Django

[...]

context = {
        'queryset': queryset,
        'currency': currency,
        'dynascore': dynascore,
    }

    # Prepare context for javascript
    json_context = json.dumps(context)
    context['json_context'] = json_context

    print(queryset)
    return render(request, template, context)


// Throws: 
// Object of type StocksPrice is not JSON serializable

Javascript

console.log(json_context)

// Throws: 
// Uncaught ReferenceError: json_context is not defined at terminal.js:1

Насколько я понял, единственный «мост» между Django полученные данные и javascript / на стороне клиента: JSON?

1 Ответ

0 голосов
/ 27 мая 2020

Добавьте другое представление и получите данные на свой javascript с помощью ajax по URL-адресу /chartdata.

views.py

from django.http import JsonResponse

def chartdata(request):
    ...
    context = {
        'queryset': queryset,
        'currency': currency,
        'dynascore': dynascore,
    }
    return JsonResponse(context)

urls.py

urlpatterns = [
    path('chartdata', views.chartdata,  name='chartdata'),
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...