# Requirements

Waffle depends only on Django (except for running Waffle’s tests) but does require certain Django features.

## User Models

Waffle requires Django’s auth system, in particular it requires both a user model and Django’s groups. If you’re using a custom user model, this can be accomplished by including Django’s PermissionsMixin, e.g.:

    from django.contrib.auth import models

    class MyUser(models.AbstractBaseUser, models.PermissionsMixin):

And of `django.contrib.auth` must be in `INSTALLED_APPS`, along with its requirements.

## Templates

Waffle provides template tags to check flags directly in templates. Using these requires the `request` object in the template context, which can be easily added with the `request` template context processor:

    TEMPLATE_CONTEXT_PROCESSORS = (
        # ...
        'django.template.context_processors.request',
        # ...