aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2012-02-21 22:50:41 +0000
committerTom Christie2012-02-21 22:50:41 +0000
commit66eabe8bd1a539f92c3d677565d69edc29a1721b (patch)
tree60c5d2f5cdba605e73545ae21d94fcf809a39788
parentb074754b54adf172cd2d102e2a326a7f322cf2ef (diff)
downloaddjango-rest-framework-66eabe8bd1a539f92c3d677565d69edc29a1721b.tar.bz2
Remove staticviews. Use standard login/logout
-rw-r--r--djangorestframework/renderers.py4
-rw-r--r--djangorestframework/templates/djangorestframework/base.html11
-rw-r--r--djangorestframework/templates/djangorestframework/login.html2
-rw-r--r--djangorestframework/tests/accept.py15
-rw-r--r--djangorestframework/tests/oauthentication.py2
-rw-r--r--djangorestframework/tests/renderers.py3
-rw-r--r--djangorestframework/tests/views.py12
-rw-r--r--djangorestframework/urls.py11
-rw-r--r--docs/howto/setup.rst17
-rw-r--r--docs/index.rst6
-rw-r--r--examples/urls.py5
11 files changed, 57 insertions, 31 deletions
diff --git a/djangorestframework/renderers.py b/djangorestframework/renderers.py
index 75957c6d..d9aa4028 100644
--- a/djangorestframework/renderers.py
+++ b/djangorestframework/renderers.py
@@ -335,7 +335,7 @@ class DocumentingTemplateRenderer(BaseRenderer):
context = RequestContext(self.view.request, {
'content': content,
'view': self.view,
- 'request': self.view.request, # TODO: remove
+ 'request': self.view.request,
'response': self.view.response,
'description': description,
'name': name,
@@ -344,8 +344,6 @@ class DocumentingTemplateRenderer(BaseRenderer):
'available_formats': self.view._rendered_formats,
'put_form': put_form_instance,
'post_form': post_form_instance,
- 'login_url': login_url,
- 'logout_url': logout_url,
'FORMAT_PARAM': self._FORMAT_QUERY_PARAM,
'METHOD_PARAM': getattr(self.view, '_METHOD_PARAM', None),
})
diff --git a/djangorestframework/templates/djangorestframework/base.html b/djangorestframework/templates/djangorestframework/base.html
index 1d4ae92a..00ecf8c3 100644
--- a/djangorestframework/templates/djangorestframework/base.html
+++ b/djangorestframework/templates/djangorestframework/base.html
@@ -20,8 +20,15 @@
<h1 id="site-name">{% block branding %}<a href='http://django-rest-framework.org'>Django REST framework</a> <span class="version"> v {{ version }}</span>{% endblock %}</h1>
</div>
<div id="user-tools">
- {% if user.is_active %}Welcome, {{ user }}.{% if logout_url %} <a href='{{ logout_url }}'>Log out</a>{% endif %}{% else %}Anonymous {% if login_url %}<a href='{{ login_url }}'>Log in</a>{% endif %}{% endif %}
- {% block userlinks %}{% endblock %}
+ {% block userlinks %}
+ {% if user.is_active %}
+ Welcome, {{ user }}.
+ <a href='{% url djangorestframework:logout %}?next={{ request.path }}'>Log out</a>
+ {% else %}
+ Anonymous
+ <a href='{% url djangorestframework:login %}?next={{ request.path }}'>Log in</a>
+ {% endif %}
+ {% endblock %}
</div>
{% block nav-global %}{% endblock %}
</div>
diff --git a/djangorestframework/templates/djangorestframework/login.html b/djangorestframework/templates/djangorestframework/login.html
index 07929f0c..248744df 100644
--- a/djangorestframework/templates/djangorestframework/login.html
+++ b/djangorestframework/templates/djangorestframework/login.html
@@ -17,7 +17,7 @@
<div id="content" class="colM">
<div id="content-main">
- <form method="post" action="{% url djangorestframework.utils.staticviews.api_login %}" id="login-form">
+ <form method="post" action="{% url djangorestframework:login %}" id="login-form">
{% csrf_token %}
<div class="form-row">
<label for="id_username">Username:</label> {{ form.username }}
diff --git a/djangorestframework/tests/accept.py b/djangorestframework/tests/accept.py
index d66f6fb0..21aba589 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 b4bcf2fa..29f2c44e 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 9a02d0a9..3ed5ab28 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 d4189087..418b4b16 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<pk>[^/]+)/$', 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 5c797bcd..3fa813ea 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 0af1449c..f0127060 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 b969c4a3..a6745fca 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 33297b55..fda7942f 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()