Commit 7537bf93 by Tom Christie

Merge pull request #922 from mindlace-mp/master

Set args and kwargs before initializing the request.
parents 75e3cbc9 d89aade3
...@@ -215,6 +215,7 @@ class DefaultRouter(SimpleRouter): ...@@ -215,6 +215,7 @@ class DefaultRouter(SimpleRouter):
""" """
include_root_view = True include_root_view = True
include_format_suffixes = True include_format_suffixes = True
root_view_name = 'api-root'
def get_api_root_view(self): def get_api_root_view(self):
""" """
...@@ -244,7 +245,7 @@ class DefaultRouter(SimpleRouter): ...@@ -244,7 +245,7 @@ class DefaultRouter(SimpleRouter):
urls = [] urls = []
if self.include_root_view: if self.include_root_view:
root_url = url(r'^$', self.get_api_root_view(), name='api-root') root_url = url(r'^$', self.get_api_root_view(), name=self.root_view_name)
urls.append(root_url) urls.append(root_url)
default_urls = super(DefaultRouter, self).get_urls() default_urls = super(DefaultRouter, self).get_urls()
......
...@@ -6,7 +6,7 @@ from rest_framework import serializers, viewsets ...@@ -6,7 +6,7 @@ from rest_framework import serializers, viewsets
from rest_framework.compat import include, patterns, url from rest_framework.compat import include, patterns, url
from rest_framework.decorators import link, action from rest_framework.decorators import link, action
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.routers import SimpleRouter from rest_framework.routers import SimpleRouter, DefaultRouter
factory = RequestFactory() factory = RequestFactory()
...@@ -148,3 +148,17 @@ class TestTrailingSlash(TestCase): ...@@ -148,3 +148,17 @@ class TestTrailingSlash(TestCase):
expected = ['^notes$', '^notes/(?P<pk>[^/]+)$'] expected = ['^notes$', '^notes/(?P<pk>[^/]+)$']
for idx in range(len(expected)): for idx in range(len(expected)):
self.assertEqual(expected[idx], self.urls[idx].regex.pattern) self.assertEqual(expected[idx], self.urls[idx].regex.pattern)
class TestNameableRoot(TestCase):
def setUp(self):
class NoteViewSet(viewsets.ModelViewSet):
model = RouterTestModel
self.router = DefaultRouter()
self.router.root_view_name = 'nameable-root'
self.router.register(r'notes', NoteViewSet)
self.urls = self.router.urls
def test_router_has_custom_name(self):
expected = 'nameable-root'
self.assertEqual(expected, self.urls[0].name)
...@@ -304,10 +304,10 @@ class APIView(View): ...@@ -304,10 +304,10 @@ class APIView(View):
`.dispatch()` is pretty much the same as Django's regular dispatch, `.dispatch()` is pretty much the same as Django's regular dispatch,
but with extra hooks for startup, finalize, and exception handling. but with extra hooks for startup, finalize, and exception handling.
""" """
request = self.initialize_request(request, *args, **kwargs)
self.request = request
self.args = args self.args = args
self.kwargs = kwargs self.kwargs = kwargs
request = self.initialize_request(request, *args, **kwargs)
self.request = request
self.headers = self.default_response_headers # deprecate? self.headers = self.default_response_headers # deprecate?
try: try:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment