Создание динамического графика из django с помощью chart.js

Я новичок в Django. В настоящее время я занимаюсь анализом настроений в пользовательских твитах в реальном времени через Twitter API. Мне удалось провести анализ и отобразить настроения. Теперь я хочу визуализировать настроения с помощью диаграмм в моем приложении Django (возможно, гистограммы или круговой диаграммы), но не знаю, как.

Я думал использовать Chart.js, чтобы сделать его отзывчивым, но большинство примеров используют статические данные, поэтому мне не удалось интегрировать мои данные, которые я извлек из Twitter API, с chart.js.

Это скриншот моей веб-страницы. Таблица представляет собой извлеченные твиты с соответствующими настроениями. Однако гистограмма - это просто статические данные. Я не знаю, как преобразовать ее в json.

скриншот моей веб-страницы

это моя views.py

from django.http.response import JsonResponse
from django.shortcuts import render, redirect, HttpResponse
from .forms import Sentiment_Typed_Tweet_analyse_form
from .sentiment_analysis_code import sentiment_analysis_code
from .forms import Sentiment_Imported_Tweet_analyse_form
from .tweepy_sentiment import Import_tweet_sentiment
from django.contrib.auth.decorators import login_required
from django.contrib import messages
      
def sentiment_analysis_import(request):
    if request.method == 'POST':
        form = Sentiment_Imported_Tweet_analyse_form(request.POST)
        tweet_text = Import_tweet_sentiment()
        analyse = sentiment_analysis_code()

        if form.is_valid():
            handle = form.cleaned_data['sentiment_imported_tweet']
            # messages.info(request, 'It might take a while to load the data.')

            if handle[0]!='#':
                list_of_tweets = tweet_text.get_hashtag(handle)
                list_of_tweets_and_sentiments = []
                for i in list_of_tweets:
            

    list_of_tweets_and_sentiments.append((i,analyse.get_tweet_sentiment(i)))
                args = {'list_of_tweets_and_sentiments':list_of_tweets_and_sentiments, 'handle':handle}
                return render(request, 'home/sentiment_import_result_hashtag.html', args)
            
            if handle[0]=='#':
                list_of_tweets = tweet_text.get_hashtag(handle)
                list_of_tweets_and_sentiments = []
                for i in list_of_tweets:
                    list_of_tweets_and_sentiments.append((i,analyse.get_tweet_sentiment(i)))
                args = {'list_of_tweets_and_sentiments':list_of_tweets_and_sentiments, 'handle':handle}
                return render(request, 'home/sentiment_import_result_hashtag.html', args)
            
    else:
        form = Sentiment_Imported_Tweet_analyse_form()
        return render(request, 'home/sentiment_import.html')

def get_data(request, *args, **kwargs):
def get_data(request, *args, **kwargs):
    sentiment_analysis_import(args)
    data = {
        args
    }
    return JsonResponse('home/sentiment_import_result_hashtag.html', data)

Это мой HTML

Может ли кто-нибудь помочь мне, как связать мои твиты настроений с графиком? Я сейчас так запутался...

Пожалуйста, дайте мне знать, если вам нужны другие файлы/код.

В большинстве случаев Chart.js исключает либо массив, либо вызов api в формате JSON.

Если вы используете Django, вы можете создать переменную, которая будет использоваться в шаблоне и массиве данных, например :

Sentiment.filter(neutral=True).count() # return the number based on a specific filter

Передайте его в переменную и в вашем шаблоне в массиве данных :

data: [{{neutral_sentiment}}, {{positive_sentiement}}, {{negative_sentiment}}], 

-> переменные, содержащие число, которое будет использоваться для построения графика

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

Вернуться на верх