Generate generic activity streams from the actions on your site. Users can follow any actors' activities for personalized streams.

Overview

Django Activity Stream

Join the chat at https://gitter.im/django-activity-stream/Lobby https://coveralls.io/repos/github/justquick/django-activity-stream/badge.svg?branch=master https://scrutinizer-ci.com/g/justquick/django-activity-stream/badges/quality-score.png?b=master https://app.fossa.io/api/projects/git%2Bgithub.com%2Fjustquick%2Fdjango-activity-stream.svg?type=shield

What is Django Activity Stream?

Django Activity Stream is a way of creating activities generated by the actions on your site.

It is designed for generating and displaying streams of interesting actions and can handle following and unfollowing of different activity sources. For example, it could be used to emulate the Github dashboard in which a user sees changes to projects they are watching and the actions of users they are following.

Action events are categorized by four main components.

  • Actor. The object that performed the activity.
  • Verb. The verb phrase that identifies the action of the activity.
  • Action Object. (Optional) The object linked to the action itself.
  • Target. (Optional) The object to which the activity was performed.

Actor, Action Object and Target are GenericForeignKeys to any arbitrary Django object and so can represent any Django model in your project. An action is a description of an action that was performed (Verb) at some instant in time by some Actor on some optional Target that results in an Action Object getting created/updated/deleted.

For example: justquick (actor) closed (verb) issue 2 (object) on django-activity-stream (target) 12 hours ago

Nomenclature of this specification is based on the Activity Streams Spec: http://activitystrea.ms/

For complete documentation see Django Activity Stream Documentation

Contributors


This project exists thanks to all the people who contribute!

https://opencollective.com/django-activity-stream/contributors.svg?width=890&button=false

Sponsors

Get supported django-activity-stream with the Tidelift Subscription
Comments
  • Django 1.11 Incompatibilities

    Django 1.11 Incompatibilities

    The overall functionality to store actions via signals seems to work nicely in Django 1.11, but trying to use the activity_stream and display_action templatetags I came across some small things that are broken due to changes in 1.11.

    • actstream/templatetags/activity_tags.py, line 96:

      return render_to_string(templates, context)
      

      Context is a django.template.context.Context instance here, but in 1.11 it must be a simple dict,

      return render_to_string(templates, context.flatten())
      

      would possibly fix that, haven't fully tested it yet.

    • actstream/urls.py, top of the file:

      try:
          from django.conf.urls import url, patterns
      except ImportError:
          from django.conf.urls.defaults import url, patterns
      

      The patterns() function is not available anymore, either the url patterns need some rework or you'd have to provide your own vendorized version. In 1.9 it says:

      django.conf.urls.patterns() is deprecated and will be removed in Django 1.10. Update your urlpatterns to be a list of django.conf.urls.url() instances instead.

    • actstream/views.py: All usage of render_to_response() is a problem, see https://docs.djangoproject.com/en/1.11/releases/1.10/

      The dictionary and context_instance parameters for the following functions are removed: django.shortcuts.render() django.shortcuts.render_to_response()

    The changelog tells me that the latest, officially supported Django version is 1.9. Are there any plans yet to extend support to Django 1.10+?

    opened by cb109 31
  • Documentation is not so good for newbie

    Documentation is not so good for newbie

    Hi. I just found about django-activity-stream. As a newbie, to create something like activity feeds in not a good idea. So I was very excited to use django-activity-stream. But I felt that the documentation was not up to what I can understand to. It was not so hard to grasp the idea behind. But "how-to" do x to get y, was a bit exhausting for me. I installed it, and added the app in my settings, and then I was lost! It would be really great, if the documentation was improved from a newbie's point of view. Best wishes! Thank you.

    docs 
    opened by robinlery 25
  • Deleting an object does not delete it's activity

    Deleting an object does not delete it's activity

    Consider such a signal which aims to create an activity when a user registers:

    def user_registered_activity(sender, **kwargs):
        if not kwargs.get('created', False):
            return None
        action.send(kwargs['instance'], verb='registered')
    signals.post_save.connect(user_registered_activity, 
        sender=models.get_model('auth', 'user'))
    

    Well guess what happens when the user is deleted: the actions are not.

    To keep our database sane, i use this snippet:

    def delete_object_activities(sender, **kwargs):
        """
        This signal attempts to delete any activity which is related to Action
        through a generic relation. This should keep the Action table sane.
        """
        Action.objects.filter(
            action_object_object_id=kwargs['instance'].pk,
            action_object_content_type=ContentType.objects.get_for_model(
                                                            kwargs['instance'])
            ).delete()
        Action.objects.filter(
            actor_object_id=kwargs['instance'].pk,
            actor_content_type=ContentType.objects.get_for_model(
                                                            kwargs['instance'])
            ).delete()
        Action.objects.filter(
            target_object_id=kwargs['instance'].pk,
            target_content_type=ContentType.objects.get_for_model(
                                                            kwargs['instance'])
            ).delete()
    signals.pre_delete.connect(delete_object_activities)
    

    In general, i'd recommend to just add the full snippet to actstream:

    from django.db.models import signals                                               
    from django.db import models
    from django.contrib.contenttypes.models import ContentType                         
    
    from actstream import action                                                       
    from actstream.models import Action                                                
    
    def user_registered_activity(sender, **kwargs):                                    
        if not kwargs.get('created', False):                                           
            return None
        action.send(kwargs['instance'], verb='registered')                             
    signals.post_save.connect(user_registered_activity, 
        sender=models.get_model('auth', 'user'))
    
    def delete_object_activities(sender, **kwargs):
        """
        This signal attempts to delete any activity which is related to Action         
        through a generic relation. This should keep the Action table sane.            
        """     
        Action.objects.filter(
            action_object_object_id=kwargs['instance'].pk,                             
            action_object_content_type=ContentType.objects.get_for_model(              
                                                            kwargs['instance']) 
            ).delete()                                                                 
        Action.objects.filter(
            actor_object_id=kwargs['instance'].pk,
            actor_content_type=ContentType.objects.get_for_model(                      
                                                            kwargs['instance'])        
            ).delete()
        Action.objects.filter(                                                         
            target_object_id=kwargs['instance'].pk,                                    
            target_content_type=ContentType.objects.get_for_model(                     
                                                            kwargs['instance'])        
            ).delete()
    signals.pre_delete.connect(delete_object_activities)
    
    opened by jpic 22
  • Missing target while using actor_stream

    Missing target while using actor_stream

    hi. I'm expecting troubles with actor_stream(request.user).

    for example:

    from actstream.models import actor_stream, Action
    print actor_stream(request.user)[0].target # returns None
    print Action.objects.all()[0].target # returns Target object
    

    BUT:

    from actstream.models import actor_stream, Action
    print request.user.actor_actions.all()[0].target  # returns Target object
    

    User model - this is a custom user model, configured as described in djangoproject tutorial. Target model looks like this:

    class Task(models.Model):
        id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
        user = models.ForeignKey('core_auth.User', blank=True, null=True)
        ... < more fields >
    

    Let me show you:

    >>> from actstream.models import actor_stream, Action
    >>> from core_auth.models import User
    >>> u = User.objects.get(username='fynjah')
    >>> actor_stream(u)[0].target # None
    >>> x = actor_stream(u)[0]
    >>> x
    <Action: fynjah changed status DONE 58 minutes ago>
    # BUT:
    >>> x.target_content_type
    <ContentType: Task>
    >>> x.target
    >>> x.target_object_id
    u'f08ae5ab-8c07-4929-9021-62c867f0d081'
    # AND:
    >>> u.actor_actions.all()[0].target
    <Task: wdstrm compositing>
    

    What am i doing wrong :\

    weirdness 
    opened by fynjah 18
  • documentation on registering the User model

    documentation on registering the User model

    This is more of a suggestion: I am using Userena with actstream, and I am not at all sure if I did this right to register the User model.

    class StubsConfig(AppConfig):
        name = 'stubs'
    
        def ready(self):
            registry.register(self.get_model('Band'))
            registry.register(self.get_model('Concert'))
            registry.register(self.get_model('Location'))
            from django.contrib.auth.models import User
            registry.register(User)
    

    Either way it would be nice to mention in the docs the right way to register the user model.

    docs 
    opened by brunoamaral 18
  • Replace problamatic CharField GFKs with PositiveInterField fields.

    Replace problamatic CharField GFKs with PositiveInterField fields.

    Hi,

    I just noticed an error that when you try to use any Django feature that joins GFK enabled models with other models (e.g. having GenericRelation defined on that model with some related_query_name), it produces an SQL error (PostgreSQL).

    Let's take this example model:

    class Post(models.Model):
        content = models.TextField(blank=True, null=True)
        position = models.PositiveSmallIntegerField(default=0, blank=True, editable=False)
        action_set = GenericRelation('actstream.Action', object_id_field='action_object_object_id', content_type_field='action_object_content_type', related_query_name='post')
    

    We are using https://docs.djangoproject.com/en/1.8/ref/contrib/contenttypes/#reverse-generic-relations here with a related_query_name defined to help sorting/filtering activity streams based on this generic related model (Post) attributes. At this point, a query like below would produce some SQL error:

    target_stream(another_object).order_by('post__position')
    

    The error produced, in particular by PostgreSQL backend is:

    operator does not exist: character varying = integer
    

    Further investigation reveals that because you are using CharField for GenericForeignKey's PK/ID part, and because by convention other Django models use PositiveIntegerField for their primary keys, Django's SQL compiler is NOT type casting the JOIN clause. Thus, the JOIN is failing from SQL backend due to an attempt to JOIN by (varchar == int) clause.

    I have successfully mitigated this issue by replacing your CharField definitions with PositiveIntegerField definitions. So, please have a look at my commit and let's discuss if there's any compelling reason to stick to CharFields.

    Thanks, Shanto

    opened by Shanto 17
  • JSONfield compatability

    JSONfield compatability

    This package is currently importing JSONfield from either django-jsonfield + django-jsonfield-compat or django_mysql, however the django-jsonfield/django-jsonfield-compat combination only supports up to django 1.9.

    I can make a PR for importing from the current preferred location, django.contrib.postgres.fields, but I just need to know if you'd also want to continue support for django =< 1.9 and therefore allow import from the existing packages.

    I am not a mysql user, but it appears no change is needed there, and importing from django_mysql is still the preferred method.

    opened by cobyrne09 15
  • Django creates migration for actstream after Foreign key to Action

    Django creates migration for actstream after Foreign key to Action

    Hello!

    I have created own model Notification. There is foreign key to actstream Action:

    class Notification(models.Model):
        user = models.ForeignKey(User)
        action = models.ForeignKey(Action)
        is_read = models.BooleanField(default=False)
    
    

    And when I run manage.py makemigrations myapp django creates one more migration for actstream. Here it is:

    # -*- coding: utf-8 -*-
    from __future__ import unicode_literals
    from django.db import migrations, models
    
    class Migration(migrations.Migration):
    
        dependencies = [
            ('actstream', '0001_initial'),
        ]
    
        operations = [
            migrations.RemoveField(
                model_name='action',
                name='data',
            ),
        ]
    
    

    So what should I do?

    Can I migrate it? But in which way will I migrate it in deploy?

    opened by dima-kov 13
  • Add support for django-mysql's JSONField as alternative implementation

    Add support for django-mysql's JSONField as alternative implementation

    What

    This PR adds optional support for django-mysql's JSONField (supported by MySQL 5.7+) to be used instead of the already supported django-jsonfield and Django TextField fallback.

    Why

    We are using MySQL and django-mysql's JSONField already and would like to use this library without having to rely on a different JSONField implementation. See https://github.com/justquick/django-activity-stream/issues/415

    How

    The new actstream.jsonfield module is responsible to choose a suitable JSONField implementation on startup:

    • USE_JSONFIELD = True and django-jsonfield + django-jsonfield-compat installed: Use that.
    • USE_JSONFIELD = True and django-mysql installed: Use that instead.
    • USE_JSONFIELD = False: TextField Fallback is used.

    A debug print like JSONField implementation is: <class 'django_mysql.models.fields.json.JSONField'> is done on startup to be able to manually check whether the correct implementation is chosen.

    Testing

    There already is a test named TestAppTests.test_jsonfield() that checks that attaching data to the JSONField works as intented, making that pass is the goal.

    I have updated the tox configuration to use django-mysql for the sql environments instead of django-jsonfield. Please see https://tox.readthedocs.io/en/latest/config.html#complex-factor-conditions for syntax.

    I have done local test runs with Python 2.7 and 3.7 against Django 1.11 and 2.1 using SQLite and MySQL 5.7:

    tox -e py27-django111-mysql
    tox -e py27-django111-sqlite
    tox -e py27-django21-mysql
    tox -e py27-django21-sqlite
    tox -e py37-django111-mysql
    tox -e py37-django111-sqlite
    tox -e py37-django21-mysql
    tox -e py37-django21-sqlite
    
    opened by cb109 12
  • Filter Action Error:  Field 'actor' does not generate an automatic  reverse relation and therefore cannot be used for reverse querying.

    Filter Action Error: Field 'actor' does not generate an automatic reverse relation and therefore cannot be used for reverse querying.

    Hey every one (@justquick),

    I have a django app and now I want to introduce django-activity-stream to notify users from events.

    My issue is that I can not filter actions by actor or target:

    python3.5 shell

    >>> from app import models
    >>> a = models.MyAppUser.objects.all()[1]
    >>> a
    <MyAppUser: Mark>
    >>> t = models.MyAppUser.objects.all()[2]
    >>> t
    <MyAppUser: Steve>
    >>> from actstream.models import Action
    >>> Action(actor=a, verb='POST', target=t)
    <Action: Mark POST Steve 0 minutes ago>
    >>> Action.objects.filter(actor=a)
    

    Error:

    Traceback (most recent call last):
      File "/.../lib/python3.5/site-packages/django/core/management/commands/shell.py", line 69, in handle
        self.run_shell(shell=options['interface'])
      File "/.../lib/python3.5/site-packages/django/core/management/commands/shell.py", line 61, in run_shell
        raise ImportError
    ImportError
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
      File "/.../lib/python3.5/site-packages/django/db/models/manager.py", line 122, in manager_method
        return getattr(self.get_queryset(), name)(*args, **kwargs)
      File "/.../lib/python3.5/site-packages/django/db/models/query.py", line 790, in filter
        return self._filter_or_exclude(False, *args, **kwargs)
      File "/.../lib/python3.5/site-packages/django/db/models/query.py", line 808, in _filter_or_exclude
        clone.query.add_q(Q(*args, **kwargs))
      File "/.../lib/python3.5/site-packages/django/db/models/sql/query.py", line 1243, in add_q
        clause, _ = self._add_q(q_object, self.used_aliases)
      File "/.../lib/python3.5/site-packages/django/db/models/sql/query.py", line 1269, in _add_q
        allow_joins=allow_joins, split_subq=split_subq,
      File "/.../lib/python3.5/site-packages/django/db/models/sql/query.py", line 1149, in build_filter
        lookups, parts, reffed_expression = self.solve_lookup_type(arg)
      File "/.../lib/python3.5/site-packages/django/db/models/sql/query.py", line 1035, in solve_lookup_type
        _, field, _, lookup_parts = self.names_to_path(lookup_splitted, self.get_meta())
      File "/.../lib/python3.5/site-packages/django/db/models/sql/query.py", line 1316, in names_to_path
        "adding a GenericRelation." % name
    
    django.core.exceptions.FieldError: Field 'actor' does not generate an automatic 
    reverse relation and therefore cannot be used for reverse querying. 
    If it is a GenericForeignKey, consider adding a GenericRelation.
    

    The output of my pip freeze is:

    app==0.0.1
    coverage==4.2
    dj-database-url==0.4.1
    **Django==1.9.5**
    **django-activity-stream==0.6.3**
    django-anymail==0.5
    django-bootstrap-breadcrumbs==0.8
    django-bootstrap-datepicker==1.1.1
    django-bootstrap3==7.1.0
    django-bower==5.1.0
    django-configurations==2.0
    django-debug-toolbar==1.5
    django-formtools==1.0
    django-nose==1.4.4
    django-postman==3.3.2
    factory-boy==2.7.0
    fake-factory==0.7.2
    flake8==3.0.4
    mccabe==0.5.2
    nose==1.3.7
    Pillow==3.3.1
    psycopg2==2.6.2
    pycodestyle==2.0.0
    pyflakes==1.2.3
    python-dateutil==2.6.0
    PyYAML==3.12
    requests==2.11.1
    rollbar==0.13.6
    six==1.10.0
    sqlparse==0.2.1
    whitenoise==3.2.1
    
    

    Similar like issue 281

    opened by maguri 12
  • Abstract models [WIP]

    Abstract models [WIP]

    I just cobbled this together taking inspiration from django.contrib.auth – it's actually working quite well with minimal effort – my apps tests pass with this, the hidden swappable API is neat.

    I mostly need input on the changes made and what you want to do about various BC considerations if this is something you'd be interested in merging.

    some thoughts

    • [x] AbstractAction
    • [x] AbstractFollow
    • [x] Django migration handling (swappable handles this)
    • [ ] Strip 0002 migration?
    • [ ] Scrap JSON support entirely and leave it to developers?
    • [ ] South migration handling (no idea... suggestions?)
    • [ ] convenient accessors in models (real models aren't available yet... lazy objects?)
    • [ ] various other calls to get_model that can/should probably go
    • [ ] extra kwargs passed to action.send currently pile into data as per existing implementation - I think as of this work any extra kwargs passed should be assumed to be fields on the model – developers can retain existing behaviour by passing a data dict data={'some':'thing'}

    usage example (working my end)

    # settings.py
    ACTSTREAM_ACTION_MODEL = 'users.Action'
    ACTSTREAM_FOLLOW_MODEL = 'users.Follow'
    
    # users/models.py
    from actstream.models import AbstractAction, AbstractFollow
    from django.contrib.postgres.fields import JSONField
    from django.db import models
    from uuid import uuid4
    
    
    class Action(AbstractAction):
        id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
        data = JSONField(default={})
    
        class Meta(AbstractAction.Meta):
            db_table = 'ras_actions'
    
    
    class Follow(AbstractFollow):
        id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    
        class Meta(AbstractFollow.Meta):
            db_table = 'ras_follows'
    

    migrations

    We discussed migrations in the other thread briefly. If you didn't know / remember (I didn't) the way the swappable behaviour works is to default to using the provided migrations. However, if the developer has supplied their own model class, your migrations are totally disabled, and instead they are generated in the developer's app.

    What this means moving forward beyond merging this is that anyone using the default model will run any new migrations you write. However, anyone else will simply inherit the new field via abstract model, and will be required to generate their own migration (simply by running makemigrations) – thus it's their problem, this is consistent with django.contrib.auth and a fairly reasonable behaviour.

    related issues

    #304 #306

    opened by stevelacey 12
  • [Feature proposal] Delete Follow objects when the followed object is deleted?

    [Feature proposal] Delete Follow objects when the followed object is deleted?

    Hi there,

    In our use case we want to delete Follow objects when the followed object is deleted. We implemented that with Django pre_delete signal, and we thought that this piece of code was generic enough to maybe be integrated in actstream.

    What do you think @justquick ? Maybe it could be conditioned to a setting if you don't want this behavior to be applied to everyone.

    If you agree I can submit a PR today :wink:

    future 
    opened by David-Guillot 1
  • Filter user feed with distinct('action_object')

    Filter user feed with distinct('action_object')

    Hello,

    first of all everything is working like a charm! I was just wondering if and how i can only display action objects that are distinct. I dont want to i.e., show duplicate comments if they have for example a different actor and target but the user is following both. I added a GenericRelation on the action object I want to filter distinct but I get a cast error. I will provide more info once I debugged further, just wanted to ask if this is even possible so I dont waste no more time on this issue.

    Br, Johannes

    question 
    opened by Quasarman 1
  • Django ReST Framework

    Django ReST Framework

    • Dynamic serializers and viewsets for the registered models in the actstream.registry
    • Default config for Action/Follow
    • Views to match (most) streams in the action manager
    • Ability to view your own actions
    • Custom serializer, viewset and permission options in settings
    • Related field evaluation using rest-framework-generic-relations

    not ready for merge yet

    #502 #286

    2.0 
    opened by justquick 28
  • Activity Stream 2 JSON Feeds

    Activity Stream 2 JSON Feeds

    We need to update the app to provide the up to date spec for v2.0 AS

    https://www.w3.org/TR/activitystreams-core/#example-1

    It's been 11 years since the 1.0 was first introduced so we are behind the times

    2.0 
    opened by justquick 0
Releases(1.4.2)
  • 1.4.2(Dec 19, 2022)

  • 1.4.0(Feb 20, 2022)

    • Django 4 support
    • Russian translations
    • Bugfix on Action.get_absolute_url
    • Set AutoField as default for app config
    • Changing minor version tracking to match Django version
    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Nov 19, 2021)

    What's Changed

    • Make sure Action.data field is not added twice in ActstreamConfig by @v1kku in https://github.com/justquick/django-activity-stream/pull/463
    • Fix the description of target streams in the document by @odeson24 in https://github.com/justquick/django-activity-stream/pull/465
    • Feature of having with_user_activity=True parameter when using User Activity Feed (User Stream) url by @ehsabd in https://github.com/justquick/django-activity-stream/pull/468
    • django 3.1 by @auvipy in https://github.com/justquick/django-activity-stream/pull/461
    • Add docker env for local development by @lociii in https://github.com/justquick/django-activity-stream/pull/471
    • Use django-jsonfield-backport (and move build env to github actions) by @lociii in https://github.com/justquick/django-activity-stream/pull/474

    New Contributors

    • @v1kku made their first contribution in https://github.com/justquick/django-activity-stream/pull/463
    • @odeson24 made their first contribution in https://github.com/justquick/django-activity-stream/pull/465
    • @ehsabd made their first contribution in https://github.com/justquick/django-activity-stream/pull/468

    Full Changelog: https://github.com/justquick/django-activity-stream/compare/0.9.0...0.10.0

    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Jun 8, 2020)

  • 0.6.3(Aug 19, 2016)

  • 0.6.2(Aug 19, 2016)

    • Proxy Model support
    • Brazilian Portuguese translations
    • Added new migration to remove data field if not being used
    • URL naming changed for actstream_unfollow_all
    • Test fix
    Source code(tar.gz)
    Source code(zip)
  • 0.6.1(Mar 6, 2016)

    • Python 3.5 support
    • Django 1.9 support
    • Better AppConf compatibility
    • More gracefully 404 handling in feeds
    • New urlpatterns support
    • Added unfollow_all support view
    • Improved docs
    Source code(tar.gz)
    Source code(zip)
Owner
Justin Quick
Software Engineer and Open Source advocate. Specialized in web app development with over 10+ years of experience. Started in big media in DC, now contracting
Justin Quick
An automatic django's update checker and MS teams notifier

Django Update Checker This is small script for checking any new updates/bugfixes/security fixes released in django News & Events and sending correspon

prinzpiuz 4 Sep 26, 2022
A Django backed for PostgreSQL using Psycopg 3

A Django backend for PostgreSQL using Psycopg 2 The backend passes the entire Django test suite, but it needs a few modifications to Django and to i

Daniele Varrazzo 42 Dec 16, 2022
Inject an ID into every log message from a Django request. ASGI compatible, integrates with Sentry, and works with Celery

Django GUID Now with ASGI support! Django GUID attaches a unique correlation ID/request ID to all your log outputs for every request. In other words,

snok 300 Dec 29, 2022
a little task queue for python

a lightweight alternative. huey is: a task queue (2019-04-01: version 2.0 released) written in python (2.7+, 3.4+) clean and simple API redis, sqlite,

Charles Leifer 4.3k Dec 29, 2022
Django API creation with signed requests utilizing forms for validation.

django-formapi Create JSON API:s with HMAC authentication and Django form-validation. Version compatibility See Travis-CI page for actual test results

5 Monkeys 34 Apr 04, 2022
CRUD with MySQL, Django and Sass.

CRUD with MySQL, Django and Sass. To have the same data in db: insert into crud_employee (first_name, last_name, email, phone, location, university) v

Luis Quiñones Requelme 1 Nov 19, 2021
Redia Cache implementation in django.

django-redis Recipe APP Simple Recipe app which shows different kinds off recipe to the user. Why Cache ? Accessing data from cache is much faster tha

Avinash Alanjkar 1 Sep 21, 2022
Comparing Database performance with Django ORM

Comparing Database performance with Django ORM Postgresql MySQL MariaDB SQLite Comparing database operation performance using django ORM. PostgreSQL v

Sarath ak 21 Nov 14, 2022
GameStop clone with Django

GameStop clone with Django This is my side project with GameStop clone Author: HackerApe GitHub Profile: View Profile LinkedIn Profile: View Profile

Dmitriy Shin 2 Dec 26, 2021
Django Audit is a simple Django app that tracks and logs requests to your application.

django-audit Django Audit is a simple Django app that tracks and logs requests to your application. Quick Start Install django-audit pip install dj-au

Oluwafemi Tairu 6 Dec 01, 2022
Quick example of a todo list application using Django and HTMX

django-htmx-todo-list Quick example of a todo list application using Django and HTMX Background Modified & expanded from https://github.com/jaredlockh

Jack Linke 54 Dec 10, 2022
Management commands to help backup and restore your project database and media files

Django Database Backup This Django application provides management commands to help backup and restore your project database and media files with vari

687 Jan 04, 2023
Meta package to combine turbo-django and stimulus-django

Hotwire + Django This repository aims to help you integrate Hotwire with Django 🚀 Inspiration might be taken from @hotwired/hotwire-rails. We are sti

Hotwire for Django 31 Aug 09, 2022
Thumbnails for Django

Thumbnails for Django. Features at a glance Support for Django 2.2, 3.0 and 3.1 following the Django supported versions policy Python 3 support Storag

Jazzband 1.6k Jan 03, 2023
Social Media Network Focuses On Data Security And Being Community Driven Web App

privalise Social Media Network Focuses On Data Security And Being Community Driven Web App The Main Idea: We`ve seen social media web apps that focuse

Privalise 8 Jun 25, 2021
An extremely fast JavaScript and CSS bundler and minifier

Website | Getting started | Documentation | Plugins | FAQ Why? Our current build tools for the web are 10-100x slower than they could be: The main goa

Evan Wallace 34.2k Jan 04, 2023
Pipeline is an asset packaging library for Django.

Pipeline Pipeline is an asset packaging library for Django, providing both CSS and JavaScript concatenation and compression, built-in JavaScript templ

Jazzband 1.4k Jan 03, 2023
Django Federated Login provides an authentication bridge between Django projects and OpenID-enabled identity providers.

Django Federated Login Django Federated Login provides an authentication bridge between Django projects and OpenID-enabled identity providers. The bri

Bouke Haarsma 18 Dec 29, 2020
Django backend of Helium's planner application

Helium Platform Project Prerequisites Python (= 3.6) Pip (= 9.0) MySQL (= 5.7) Redis (= 3.2) Getting Started The Platform is developed using Pytho

Helium Edu 17 Dec 14, 2022
Auto-detecting the n+1 queries problem in Python

nplusone nplusone is a library for detecting the n+1 queries problem in Python ORMs, including SQLAlchemy, Peewee, and the Django ORM. The Problem Man

Joshua Carp 837 Dec 29, 2022