{{ form.username }}
diff --git a/djangorestframework/tests/accept.py b/djangorestframework/tests/accept.py
index d66f6fb03..21aba589b 100644
--- a/djangorestframework/tests/accept.py
+++ b/djangorestframework/tests/accept.py
@@ -1,3 +1,4 @@
+from django.conf.urls.defaults import patterns, url, include
from django.test import TestCase
from djangorestframework.compat import RequestFactory
from djangorestframework.views import View
@@ -13,9 +14,19 @@ SAFARI_5_0_USER_AGENT = 'Mozilla/5.0 (X11; U; Linux x86_64; en-ca) AppleWebKit/5
OPERA_11_0_MSIE_USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 8.0; X11; Linux x86_64; pl) Opera 11.00'
OPERA_11_0_OPERA_USER_AGENT = 'Opera/9.80 (X11; Linux x86_64; U; pl) Presto/2.7.62 Version/11.00'
+
+urlpatterns = patterns('',
+ url(r'^api', include('djangorestframework.urls', namespace='djangorestframework'))
+)
+
+
class UserAgentMungingTest(TestCase):
- """We need to fake up the accept headers when we deal with MSIE. Blergh.
- http://www.gethifi.com/blog/browser-rest-http-accept-headers"""
+ """
+ We need to fake up the accept headers when we deal with MSIE. Blergh.
+ http://www.gethifi.com/blog/browser-rest-http-accept-headers
+ """
+
+ urls = 'djangorestframework.tests.accept'
def setUp(self):
diff --git a/djangorestframework/tests/oauthentication.py b/djangorestframework/tests/oauthentication.py
index b4bcf2fa8..29f2c44ea 100644
--- a/djangorestframework/tests/oauthentication.py
+++ b/djangorestframework/tests/oauthentication.py
@@ -27,7 +27,7 @@ else:
urlpatterns = patterns('',
url(r'^$', oauth_required(ClientView.as_view())),
url(r'^oauth/', include('oauth_provider.urls')),
- url(r'^accounts/login/$', 'djangorestframework.utils.staticviews.api_login'),
+ url(r'^restframework/', include('djangorestframework.urls', namespace='djangorestframework')),
)
diff --git a/djangorestframework/tests/renderers.py b/djangorestframework/tests/renderers.py
index 9a02d0a9a..3ed5ab28f 100644
--- a/djangorestframework/tests/renderers.py
+++ b/djangorestframework/tests/renderers.py
@@ -1,6 +1,6 @@
import re
-from django.conf.urls.defaults import patterns, url
+from django.conf.urls.defaults import patterns, url, include
from django.test import TestCase
from djangorestframework import status
@@ -73,6 +73,7 @@ urlpatterns = patterns('',
url(r'^jsonp/nojsonrenderer$', MockGETView.as_view(renderers=[JSONPRenderer])),
url(r'^html$', HTMLView.as_view()),
url(r'^html1$', HTMLView1.as_view()),
+ url(r'^api', include('djangorestframework.urls', namespace='djangorestframework'))
)
diff --git a/djangorestframework/tests/views.py b/djangorestframework/tests/views.py
index d41890878..418b4b164 100644
--- a/djangorestframework/tests/views.py
+++ b/djangorestframework/tests/views.py
@@ -1,4 +1,5 @@
-from django.conf.urls.defaults import patterns, url
+from django.core.urlresolvers import reverse
+from django.conf.urls.defaults import patterns, url, include
from django.http import HttpResponse
from django.test import TestCase
from django.test import Client
@@ -45,14 +46,13 @@ class MockResource(ModelResource):
model = MockResourceModel
fields = ('foo', 'bar', 'baz')
-urlpatterns = patterns('djangorestframework.utils.staticviews',
- url(r'^accounts/login$', 'api_login'),
- url(r'^accounts/logout$', 'api_logout'),
+urlpatterns = patterns('',
url(r'^mock/$', MockView.as_view()),
url(r'^mock/final/$', MockViewFinal.as_view()),
url(r'^resourcemock/$', ResourceMockView.as_view()),
url(r'^model/$', ListOrCreateModelView.as_view(resource=MockResource)),
url(r'^model/(?P
[^/]+)/$', InstanceModelView.as_view(resource=MockResource)),
+ url(r'^restframework/', include('djangorestframework.urls', namespace='djangorestframework')),
)
class BaseViewTests(TestCase):
@@ -123,13 +123,13 @@ class ExtraViewsTests(TestCase):
def test_login_view(self):
"""Ensure the login view exists"""
- response = self.client.get('/accounts/login')
+ response = self.client.get(reverse('djangorestframework:login'))
self.assertEqual(response.status_code, 200)
self.assertEqual(response['Content-Type'].split(';')[0], 'text/html')
def test_logout_view(self):
"""Ensure the logout view exists"""
- response = self.client.get('/accounts/logout')
+ response = self.client.get(reverse('djangorestframework:logout'))
self.assertEqual(response.status_code, 200)
self.assertEqual(response['Content-Type'].split(';')[0], 'text/html')
diff --git a/djangorestframework/urls.py b/djangorestframework/urls.py
index 5c797bcdb..3fa813eae 100644
--- a/djangorestframework/urls.py
+++ b/djangorestframework/urls.py
@@ -1,6 +1,9 @@
-from django.conf.urls.defaults import patterns
+from django.conf.urls.defaults import patterns, url
-urlpatterns = patterns('djangorestframework.utils.staticviews',
- (r'^accounts/login/$', 'api_login'),
- (r'^accounts/logout/$', 'api_logout'),
+
+template_name = {'template_name': 'djangorestframework/login.html'}
+
+urlpatterns = patterns('django.contrib.auth.views',
+ url(r'^login/$', 'login', template_name, name='login'),
+ url(r'^logout/$', 'logout', template_name, name='logout'),
)
diff --git a/docs/howto/setup.rst b/docs/howto/setup.rst
index 0af1449cb..f01270601 100644
--- a/docs/howto/setup.rst
+++ b/docs/howto/setup.rst
@@ -53,16 +53,17 @@ YAML support is optional, and requires `PyYAML`_.
Login / Logout
--------------
-Django REST framework includes login and logout views that are useful if
-you're using the self-documenting API::
+Django REST framework includes login and logout views that are needed if
+you're using the self-documenting API.
- from django.conf.urls.defaults import patterns
+Make sure you include the following in your `urlconf`::
- urlpatterns = patterns('djangorestframework.views',
- # Add your resources here
- (r'^accounts/login/$', 'api_login'),
- (r'^accounts/logout/$', 'api_logout'),
- )
+ from django.conf.urls.defaults import patterns, url
+
+ urlpatterns = patterns('',
+ ...
+ url(r'^restframework', include('djangorestframework.urls', namespace='djangorestframework'))
+ )
.. _django.contrib.staticfiles: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/
.. _django-staticfiles: http://pypi.python.org/pypi/django-staticfiles/
diff --git a/docs/index.rst b/docs/index.rst
index b969c4a38..a6745fca5 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -64,6 +64,12 @@ To add Django REST framework to a Django project:
* Ensure that the ``djangorestframework`` directory is on your ``PYTHONPATH``.
* Add ``djangorestframework`` to your ``INSTALLED_APPS``.
+* Add the following to your URLconf. (To include the REST framework Login/Logout views.)::
+
+ urlpatterns = patterns('',
+ ...
+ url(r'^restframework', include('djangorestframework.urls', namespace='djangorestframework'))
+ )
For more information on settings take a look at the :ref:`setup` section.
diff --git a/examples/urls.py b/examples/urls.py
index 33297b550..fda7942fb 100644
--- a/examples/urls.py
+++ b/examples/urls.py
@@ -1,4 +1,4 @@
-from django.conf.urls.defaults import patterns, include
+from django.conf.urls.defaults import patterns, include, url
from sandbox.views import Sandbox
try:
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
@@ -15,8 +15,7 @@ urlpatterns = patterns('',
(r'^pygments/', include('pygments_api.urls')),
(r'^blog-post/', include('blogpost.urls')),
(r'^permissions-example/', include('permissionsexample.urls')),
-
- (r'^', include('djangorestframework.urls')),
+ url(r'^restframework/', include('djangorestframework.urls', namespace='djangorestframework')),
)
urlpatterns += staticfiles_urlpatterns()