Skip to main content

Exploring Django Channels

https://dev.to/sm0ke/django-framework-popular-extensions-a-short-list-130

Django Channels​

Channels is a project that takes Django and extends its abilities beyond HTTP - to handle WebSockets, chat protocols, IoT protocols, and more. It's built on a Python specification called ASGI.

It does this by taking the core of Django and layering a fully asynchronous layer underneath, running Django itself in a synchronous mode but handling connections and sockets asynchronously, and giving you the choice to write in either style.

https://realpython.com/getting-started-with-django-channels

https://channels.readthedocs.io/en/latest

https://www.sourcelair.com/blog/articles/115/django-channels-chat

https://medium.com/@ksarthak4ever/django-websockets-and-channels-85b7d5e59dda

valberg.dk - Writing a chat application in Django 4.2 using async StreamingHttpResponse, Server-Sent Events and PostgreSQL LISTEN/NOTIFY

Pinax​

Pinax is an open source ecosystem of reusable Django apps, themes, and starter project templates.

It takes care of the things that many sites have in common so you can focus on what makes your site different.

Pinax provides:

  • Standard project layoutfor consistency and easy deployment
  • Starter projectsthat can be used as the basis for any Django website as well as some tailored-to-community sites, company sites, intranets and sites in closed beta
  • Reusable appsproviding both back-end functionality and user-facing components
  • Default templatesto enable quick prototyping

https://pinaxproject.com/pinax/what_is_pinax

Daphne​

Daphne is a HTTP, HTTP2 and WebSocket protocol server for ASGI ⭐ 1.6k and ASGI-HTTP ⭐ 1.6k, developed to power Django Channels.

It supports automatic negotiation of protocols; there's no need for URL prefixing to determine WebSocket endpoints versus HTTP endpoints.

https://github.com/django/daphne

Django Keycloak​

https://django-keycloak.readthedocs.io/en/latest/index.html

Django Cookiecutter​

Cookiecutter Django is a framework for jumpstarting production-ready Django projects quickly.

https://github.com/pydanny/cookiecutter-django

django-taggit​

https://github.com/jazzband/django-taggit ⭐ 3.4k

django-taggit a simpler approach to tagging with Django. Add "taggit"to your INSTALLED_APPS then just add a TaggableManager to your model.

Comma seperate values

Cons​

  • Can't control the quality of entries
  • Can't select using view

Django River​

https://github.com/javrasya/django-river ⭐ 747

Django workflow library that supports on the fly changes

https://djangopackages.org/grids/g/workflow

https://github.com/viewflow/viewflow ⭐ 2.9k

Reusable workflow library for Django

Django Reversion​

https://github.com/etianen/django-reversion ⭐ 3.2k

django-reversion is an extension to the Django web framework that provides version control for model instances.

Management commands — django-reversion 5.0.12 documentation

./manage.py deleterevisions
# keep any changes from last 30 days
./manage.py deleterevisions your_app.YourModel --days=30
# keep 30 most recent changes for each item.
./manage.py deleterevisions your_app.YourModel --keep=30
# Keep anything from last 30 days and at least 3 from older changes.
./manage.py deleterevisions your_app.YourModel --keep=3 --days=30

# With no arguments, this command will delete your entire revision history! Read the command help for ways to limit which revisions should be deleted.

django-reversion/reversion/management/commands/deleterevisions.py at a781656740bcb0d998324cd3a8c11c8754e1e1b2 · etianen/django-reversion · GitHub ⭐ 3.2k

Django Crispy Forms​

https://django-crispy-forms.readthedocs.io/en/latest

django-crispy-forms provides you with a|crispyfilter and {%crispy%} tag that will let you control the rendering behavior of your Django forms in a very elegant and DRY way. Have full control without writing custom form templates. All this without breaking the standard way of doing things in Django, so it plays nice with any other form application.

Django haystack​

https://django-haystack.readthedocs.io/en/v2.4.1/index.html

Haystack provides modular search for Django. It features a unified, familiar API that allows you to plug in different search backends (such as Solr, Elasticsearch, Whoosh, Xapian, etc.) without having to modify your code.

Django ratelimit​

Django Ratelimit - Django Ratelimit 4.0.0 documentation

from django_ratelimit.decorators import ratelimit

@ratelimit(key="get:chat_id", rate="1/30s", block=False)
def send_email_and_push(request):

if request.method == "GET":
send_chat_link(request, "email")
push_response = send_chat_link(request, "push")

return push_response

Django API Documentation​

Others​

django-admin-rangefilter==0.3.8 #for selecting date range in django admin site
django-cors-headers==2.4.0
django-crispy-forms==1.7.2
django-filter==1.1.0 #used by graphene-django for filtering on fields
django-redis==4.10.0
django-seed==0.1.9
django-ses==0.8.12
django-silk==3.0.4
django-smart-selects==1.5.4 #for adding filter or group (chained) models in dropdowns
django-sortedm2m==1.5.0
gevent==1.4.0
graphene-django==2.3.2

pyinotify==0.9.6

https://djangopackages.org/grids/g/bulk_update

https://github.com/burke-software/django-mass-edit

http://whitenoise.evans.io/en/stable

Tools​

django-model-utils​

Django model mixins and utilities

https://github.com/jazzband/django-model-utils

https://django-model-utils.readthedocs.io/en/latest/fields.html

django-storages​

https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html

https://simpleisbetterthancomplex.com/tutorial/2017/08/01/how-to-setup-amazon-s3-in-a-django-project.html

drf-api-logger​

https://pypi.org/project/drf-api-logger

https://viewflow.medium.com/top-102-most-downloaded-django-packages-in-2020-108f0cd372e7