Giter Site home page Giter Site logo

sample-django-real-time-charts's Introduction

Simple sample project to showcase real time data generation with Django and DRF using Django Channels, this data is then used to plot different real time charts with Charts JS and bootstrap in the front-end. The charts include Bar chart, Pie Chart and Line chart. .

Features:

  • Up-to-date dependencies
  • Stack: Django
  • API via DRF
  • Webprotocol Http & Websocket
  • Charts: Chart.js
  • Styling: BS5 (via CDN)

> ๐Ÿ‘‰ **Image**

charts1


โœจ How to use it

๐Ÿ‘‰ Clone Sources (this repo)

$ git clone https://github.com/app-generator/sample-django-real-time-charts/
$ cd sample-django-real-time-charts
>> git clone https://github.com/app-generator/sample-django-real-time-charts/
>> cd sample-django-real-time-charts

๐Ÿ‘‰ Install Modules using a Virtual Environment

$ virtualenv env
$ source env/bin/activate
$ pip3 install -r requirements.txt

Or for Windows-based Systems

$ virtualenv env
$ .\env\Scripts\activate
$
$ # Install modules - SQLite Database
$ pip3 install -r requirements.txt

> ๐Ÿ‘‰ **Image**

charts2


๐Ÿ‘‰ **Download redis**

Get the latest version of redis from https://redis.io/download and follow the installation guides, after installation run redis-server to start redis server.

Or for Windows-based Systems

On windows, you'll need to get latest redis cli from https://github.com/tporadowski/redis, click to download latest reddit package, then doble click on the redis file and open in file explorer after to install, type c:\program files\redis on the explorer search bar and click on redis-cli.exe and your redis server is opened already.


๐Ÿ‘‰ Migrate Database

$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py runserver

๐Ÿ‘‰ Create Superuser

$ python manage.py createsuperuser

๐Ÿ‘‰ Start the APP

$ python manage.py runserver

The bootstrap flow

  • Access the admin section
    • Load data/users.csv in users table (using import/export feature)
    • Load data/products.csv in users table (using import/export feature)
  • Access the HOMEpage
    • Charts should be displayed with data

Navigations

  • Access all api at localhost:8000/all/
  • Add new instance to the Product model at localhost:8000/create/

sample-django-real-time-charts's People

Contributors

app-generator avatar defidelity avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

mbea-int

sample-django-real-time-charts's Issues

Runtime Error - After Fresh Install

Short Log:

WebSocket CONNECT /ws/users-created/ [127.0.0.1:51109]
Exception inside application: ERR unknown command 'BZPOPMIN'
...

Full Log

(env) PS D:\work\repo-samples\sample-django-real-time-charts> python manage.py runserver 8001  
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).
May 22, 2022 - 16:02:45
Django version 4.0.4, using settings 'core.settings'
Starting ASGI/Channels version 3.0.4 development server at http://127.0.0.1:8001/
Quit the server with CTRL-BREAK.
HTTP GET / 200 [0.01, 127.0.0.1:51097]
WebSocket HANDSHAKING /ws/products/ [127.0.0.1:51102]
WebSocket CONNECT /ws/products/ [127.0.0.1:51102]
WebSocket HANDSHAKING /ws/users-purchased/ [127.0.0.1:51106]
WebSocket CONNECT /ws/users-purchased/ [127.0.0.1:51106]
WebSocket HANDSHAKING /ws/users-created/ [127.0.0.1:51109]
WebSocket CONNECT /ws/users-created/ [127.0.0.1:51109]
Exception inside application: ERR unknown command 'BZPOPMIN'
Traceback (most recent call last):
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\staticfiles.py", line 44, in __call__
    return await self.application(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\routing.py", line 71, in __call__
    return await application(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\sessions.py", line 47, in __call__
    return await self.inner(dict(scope, cookies=cookies), receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\sessions.py", line 263, in __call__
    return await self.inner(wrapper.scope, receive, wrapper.send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\auth.py", line 185, in __call__
    return await super().__call__(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\middleware.py", line 26, in __call__
    return await self.inner(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\routing.py", line 150, in __call__
    return await application(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\consumer.py", line 94, in app
    return await consumer(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\consumer.py", line 58, in __call__
    await await_many_dispatch(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\utils.py", line 58, in await_many_dispatch
    await task
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\utils.py", line 50, in await_many_dispatch
    result = task.result()
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels_redis\core.py", line 492, in receive
    message_channel, message = await self.receive_single(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels_redis\core.py", line 547, in receive_single
    content = await self._brpop_with_clean(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels_redis\core.py", line 385, in _brpop_with_clean
    result = await connection.bzpopmin(channel, timeout=timeout)
aioredis.errors.ReplyError: ERR unknown command 'BZPOPMIN'
Exception inside application: ERR unknown command 'BZPOPMIN'
Traceback (most recent call last):
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\staticfiles.py", line 44, in __call__
    return await self.application(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\routing.py", line 71, in __call__
    return await application(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\sessions.py", line 47, in __call__
    return await self.inner(dict(scope, cookies=cookies), receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\sessions.py", line 263, in __call__
    return await self.inner(wrapper.scope, receive, wrapper.send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\auth.py", line 185, in __call__
    return await super().__call__(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\middleware.py", line 26, in __call__
    return await self.inner(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\routing.py", line 150, in __call__
    return await application(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\consumer.py", line 94, in app
    return await consumer(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\consumer.py", line 58, in __call__
    await await_many_dispatch(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\utils.py", line 58, in await_many_dispatch
    await task
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\utils.py", line 50, in await_many_dispatch
    result = task.result()
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels_redis\core.py", line 492, in receive
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\sessions.py", line 47, in __call__
    return await self.inner(dict(scope, cookies=cookies), receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\sessions.py", line 263, in __call__
    return await self.inner(wrapper.scope, receive, wrapper.send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\auth.py", line 185, in __call__
    return await super().__call__(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\middleware.py", line 26, in __call__
    return await self.inner(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\routing.py", line 150, in __call__
    return await application(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\consumer.py", line 94, in app
    return await consumer(scope, receive, send)
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\consumer.py", line 58, in __call__
    await await_many_dispatch(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\utils.py", line 58, in await_many_dispatch
    await task
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels\utils.py", line 50, in await_many_dispatch
    result = task.result()
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels_redis\core.py", line 492, in receive
    message_channel, message = await self.receive_single(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels_redis\core.py", line 547, in receive_single
    content = await self._brpop_with_clean(
  File "D:\work\repo-samples\sample-django-real-time-charts\env\lib\site-packages\channels_redis\core.py", line 385, in _brpop_with_clean
    result = await connection.bzpopmin(channel, timeout=timeout)
aioredis.errors.ReplyError: ERR unknown command 'BZPOPMIN'
WebSocket DISCONNECT /ws/products/ [127.0.0.1:51102]
WebSocket DISCONNECT /ws/users-purchased/ [127.0.0.1:51106]
WebSocket DISCONNECT /ws/users-created/ [127.0.0.1:51109]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.