Quickstart Guide#

Here follows a step-by-step guide to get you started with django-view-decorator.

1. Install django-view-decorator#

Install django-view-decorator using pip:

pip install django-view-decorator

2. Add django_view_decorator to your INSTALLED_APPS setting#

Add django_view_decorator to your INSTALLED_APPS setting:

INSTALLED_APPS = (
    ...
    'django_view_decorator',
)

3. Setup URL routing#

Add the following to your projects ROOT_URLCONF module:

from django.urls import path

from django_view_decorator import include_view_urls

urlpatterns = [
    path("", include_view_urls()),
]

4. Start using the view decorator#

Add the @view decorator to your views. Note that by default only views placed in the views.py module of you apps will be discovered:

from django_view_decorator import view

@view(
    paths="/my_view/",
    name="my_view",
)
def my_view(request):
    return HttpResponse("Hello World!")


@view(
    paths="/login_required/",
    name="login_required",
    login_required=True,
)
def login_required_view(request):
    return HttpResponse("Hello World from behind the login!")


@view(
    paths="/staff_required/",
    name="staff_required",
    staff_required=True,
)
def staff_required(request):
    return HttpResponse("Hello staff member!")


@view(
    paths="/class_based_view/",
    name="class_based_view",
)
class MyView(View):
    def get(self, request):
        return HttpResponse("Hello World!")

5. Namespace your views#

If you want to namespace your views, you can do so by adding the namespace argument to the @view decorator:

@view(
    paths="/my_view/",
    name="my_view",
    namespace="my_namespace",
)
def my_view(request):
    return HttpResponse("Hello World!")

or you can even construct a view decorator with a namespace:

from django_view_decorator import namespaced_decorator_factory


namespaced_view = namespaced_decorator_factory(namespace="my_namespace")


@namespaced_view(
    paths="/my_view/",
    name="my_view",
)
def my_view(request):
    return HttpResponse("Hello World!")