mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-02 19:40:13 +03:00
Convert drf to expect 'rest_framework' namespace
This commit is contained in:
parent
1de241d9bf
commit
09343c1874
|
@ -339,7 +339,8 @@ class HyperlinkedRelatedField(RelatedField):
|
|||
self.view_name, request
|
||||
)
|
||||
except AttributeError:
|
||||
expected_viewname = self.view_name
|
||||
# by default, expect the 'rest_framework' namespace
|
||||
expected_viewname = 'rest_framework:' + self.view_name
|
||||
|
||||
if match.view_name != expected_viewname:
|
||||
self.fail('incorrect_match')
|
||||
|
|
|
@ -305,10 +305,7 @@ class APIRootView(views.APIView):
|
|||
def get(self, request, *args, **kwargs):
|
||||
# Return a plain {"name": "hyperlink"} response.
|
||||
ret = OrderedDict()
|
||||
namespace = request.resolver_match.namespace
|
||||
for key, url_name in self.api_root_dict.items():
|
||||
if namespace:
|
||||
url_name = namespace + ':' + url_name
|
||||
try:
|
||||
ret[key] = reverse(
|
||||
url_name,
|
||||
|
|
|
@ -135,6 +135,13 @@ class NamespaceVersioning(BaseVersioning):
|
|||
)
|
||||
|
||||
def get_versioned_viewname(self, viewname, request):
|
||||
"""
|
||||
The incoming `viewname` should be prefixed with the 'rest_framework'
|
||||
application namespace. We want to replace this with the version
|
||||
instance namespace.
|
||||
"""
|
||||
if viewname.startswith('rest_framework:'):
|
||||
viewname = viewname[len('rest_framework:'):]
|
||||
return request.version + ':' + viewname
|
||||
|
||||
|
||||
|
|
|
@ -146,12 +146,16 @@ class TestSimpleRouter(TestCase):
|
|||
class TestRootView(URLPatternsTestCase, TestCase):
|
||||
urlpatterns = [
|
||||
url(r'^non-namespaced/', include(namespaced_router.urls)),
|
||||
url(r'^namespaced/', include((namespaced_router.urls, 'namespaced'), namespace='namespaced')),
|
||||
url(r'^namespaced1/', include((namespaced_router.urls, 'namespaced1'), namespace='namespaced1')),
|
||||
url(r'^namespaced2/', include((namespaced_router.urls, 'namespaced2'), namespace='namespaced2')),
|
||||
]
|
||||
|
||||
def test_retrieve_namespaced_root(self):
|
||||
response = self.client.get('/namespaced/')
|
||||
assert response.data == {"example": "http://testserver/namespaced/example/"}
|
||||
response = self.client.get('/namespaced1/')
|
||||
assert response.data == {"example": "http://testserver/namespaced1/example/"}
|
||||
|
||||
response = self.client.get('/namespaced2/')
|
||||
assert response.data == {"example": "http://testserver/namespaced2/example/"}
|
||||
|
||||
def test_retrieve_non_namespaced_root(self):
|
||||
response = self.client.get('/non-namespaced/')
|
||||
|
|
Loading…
Reference in New Issue
Block a user