diff --git a/rest_framework/compat.py b/rest_framework/compat.py index c0aa1d2fc..47122ca84 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -11,6 +11,7 @@ import inspect import django from django.apps import apps from django.conf import settings +from django.contrib.auth import views from django.core.exceptions import ImproperlyConfigured, ValidationError from django.core.validators import \ MaxLengthValidator as DjangoMaxLengthValidator @@ -332,3 +333,12 @@ def authenticate(request=None, **credentials): return authenticate(**credentials) else: return authenticate(request=request, **credentials) + +if django.VERSION < (1, 11): + login = views.login + login_kwargs = {'template_name': 'rest_framework/login.html'} + logout = views.logout +else: + login = views.LoginView.as_view(template_name='rest_framework/login.html') + login_kwargs = {} + logout = views.LogoutView.as_view() diff --git a/rest_framework/urls.py b/rest_framework/urls.py index bdc1d77d0..60107d4d2 100644 --- a/rest_framework/urls.py +++ b/rest_framework/urls.py @@ -15,12 +15,11 @@ and you should make sure your authentication settings include `SessionAuthentica from __future__ import unicode_literals from django.conf.urls import url -from django.contrib.auth import views -template_name = {'template_name': 'rest_framework/login.html'} +from rest_framework.compat import login, login_kwargs, logout app_name = 'rest_framework' urlpatterns = [ - url(r'^login/$', views.login, template_name, name='login'), - url(r'^logout/$', views.logout, template_name, name='logout'), + url(r'^login/$', login, login_kwargs, name='login'), + url(r'^logout/$', logout, name='logout'), ]