Skip to main content

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

Project description

Activity Stream Documentation

Authors:Justin Quick <>, Aaron Williamson, Jordan Reiter, Manuel Aristaran
pip install djang-activity-stream==0.2.1

Django Activity Stream is a way of creating activities generated by the actions on your site. Action events are categorized by three main components.

  • Actor. The object that performed the action.
  • Verb. The verb phrase of the action performed.
  • Target. (Optional) The object that the verb is enacted on.

Actor and Target are GenericForeignKeys to any arbitrary Django object. An action is a description of an action that was performed (Verb) at some instant in time by some Acor, with some optional Target.

Nomenclature of this specification is based on the Atom Activity Extension

Example Project

Download the most recent sourcecode and start up the development server. Make sure you have the most recent version of django:

git clone git://
cd django-activity-stream
python install # sudo this
pip install django # and this
cd example_project
python runserver

If all goes well it will be available at Use the demo login already filled in and try tinkering with the site and following users/groups. Some sample data is provided.

To test the activity-stream app, stop the server and run this:

python test actstream


Add actstream to your INSTALLED_APPS:


Add the activity urls:

urlpatterns = patterns('',
    ('^activity/', include('actstream.urls')),

Generating Actions

Generating actions is probably best done in a separate signal:

from django.db.models.signals import pre_save
from actstream import action
from myapp.models import MyModel

def my_handler(sender, **kwargs):, verb='was saved')

pre_save.connect(my_handler, sender=MyModel)

To generate an action anywhere in your code, simply import the action signal and send it with your actor, verb, and target:

from actstream import action

action.send(request.user, verb='reached level 10')
action.send(request.user, verb='joined', target=group)

Following Actors

Generating the link between a User and any particular Actor is as easy as calling a function:

from actstream.models import follow, unfollow

follow(request.user, group)

You can also just make a GET request to the actstream_follow view:

GET /activity/follow/<content_type_id>/<object_id>/?next=/blog/

Then the current logged in user will follow the actor defined by content_type_id & object_id. Optional next parameter is URL to redirect to.

There is also a function actstream.unfollow which removes the link and takes the same arguments as actstream.follow

Action Feeds

Listings of actions are available for several points of view. All return a QuerySet of Action items sorted by -timestamp:

from actstream.models import actor_stream, user_stream, model_stream

Actions by a given actor:


Actions by any given Django Model:


Actions from actors that a particular user is folowing:


Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-activity-stream-0.2.1.tar.gz (9.5 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page