Memorize your Django project's items with spaced repetition theory
Project description
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>
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>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
django-memorize-0.5.1.zip
(21.2 kB
view hashes)
django-memorize-0.5.1.tar.gz
(16.0 kB
view hashes)