single |
[Build Status]
# Stronghold
Get inside your stronghold and make all your Django views default
login_required
Stronghold is a very small and easy to use django app that makes all your
Django project default to require login for all of your views.
WARNING: still in development, so some of the DEFAULTS and such will be
changing without notice.
## Installation
Install via pip.
```sh
pip install django-stronghold
`
Add stronghold to your INSTALLED_APPS in your Django settings file
`python
INSTALLED_APPS = (
#...
'stronghold',
)
`
Then add the stronghold middleware to your MIDDLEWARE_CLASSES in your
Django settings file
`python
MIDDLEWARE_CLASSES = (
#...
'stronghold.middleware.LoginRequiredMiddleware',
)
```
## Usage
If you followed the installation instructions now all your views are
defaulting to require a login.
To make a view public again you can use the public decorator provided in
`stronghold.decorators` like so:
### For function based views
```python
from stronghold.decorators import public
@public
def someview(request):
# do some work
#...
```
### For class based views (decorator)
```python
from django.utils.decorators import method_decorator
from stronghold.decorators import public
class SomeView(View):
def get(self, request, *args, **kwargs):
# some view logic
#...
@method_decorator(public)
def dispatch(self, *args, **kwargs):
return super(SomeView, self).dispatch(*args, **kwargs)
```
### For class based views (mixin)
```python
from stronghold.views import StrongholdPublicMixin
class SomeView(StrongholdPublicMixin, View):
pass
```
## Configuration (optional)
### STRONGHOLD_DEFAULTS
Use Strongholds defaults in addition to your own settings.
**Default**:
```python
STRONGHOLD_DEFAULTS = True
```
You can add a tuple of url regexes in your settings file with the
`STRONGHOLD_PUBLIC_URLS` setting. Any url that matches against these
|