skip to navigation
skip to content

django-memorize 0.5.1

Memorize your Django project's items with spaced repetition theory

Downloads ↓

Writing a flashcard application is almost a rite of passage for django users.
You create a simple Card model, you create a quiz view and template and you call
it a day. A simple application and not very useful.

Django-memorize adds a more advanced way of learning your flashcards (or
whatever items you'd like) with the theory of `spaced repetition
<http://en.wikipedia.org/wiki/Spaced_repetition spaced repetition>`_. The
`SuperMemo 2 algorithm <http://www.supermemo.com/english/ol/sm2.htm>`_ is
currently used. Flashcard web apps have just gotten better and easier.

Installation
============
#. Download the `latest version
<http://code.google.com/p/django-memorize/downloads/list>`_.
#. Extract and run ``python setup.py install``.
#. Add ``memorize`` to ``INSTALLED_APPS`` list.

Usage
=====

Add an Item to Practice
-----------------------
Let's assume you have a flashcard web app with a card model::

  from django.db import models
  from django.contrib.auth.models import User

  class Card(models.Model):
      front = models.CharField(max_length=255)
      back = models.CharField(max_length=255)
      user = models.ForeignKey(User)


To begin practicing a new card, save a practice object for your flashcard::

  from memorize.models import Practice

  card = Card(front="When was Sgt. Pepper released?", back="1967",
user=request.user)
  practice = Practice(item=card, user=card.user)
  practice.save()


Start Practicing
----------------
The view ``memorize.views.next_practice_item`` does all the work of determining
what the next item a user should practice. You just need to provide a template
file. Add an item to your urls.py file::

  urlpatterns += patterns(
      'memorize.views',
      url(r'^item/next/$', 'next_practice_item', {'template':
'memorize/next.html'}, name='next-song'),
  )


Template Variables Provided
~~~~~~~~~~~~~~~~~~~~~~~~~~~
form
    A ``memorize.forms.RatingsForm`` instance you use to save the performance on
this practice instance.

item
    Your original item. Use this to get your information (e.g., ``card.front``
information)

practice
    The practice row.

Saving Feedback
---------------
The key to spaced repetition algorithms is using your past performance to
determine when is the optimal time to reshow an item. If you used the
``next_practice_item`` the template will have a ``form`` object that provides
all the relative information.

The view ``memorize.views.process_rating`` will process the data. Add this view
to your urls.py file.

Example::

  <form action="{% url memorize.views.process_rating %}" method="post">
      {{ form }}
  </form>
 
File Type Py Version Uploaded on Size # downloads
django-memorize-0.5.1.tar.gz (md5) Source 2010-02-11 15KB 466
django-memorize-0.5.1.zip (md5) Source 2010-02-11 20KB 448