本文整理汇总了Python中rest_framework.routers.SimpleRouter.register方法的典型用法代码示例。如果您正苦于以下问题:Python SimpleRouter.register方法的具体用法?Python SimpleRouter.register怎么用?Python SimpleRouter.register使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rest_framework.routers.SimpleRouter
的用法示例。
在下文中一共展示了SimpleRouter.register方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestActionKeywordArgs
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestActionKeywordArgs(TestCase):
"""
Ensure keyword arguments passed in the `@action` decorator
are properly handled. Refs #940.
"""
def setUp(self):
class TestViewSet(viewsets.ModelViewSet):
permission_classes = []
@detail_route(methods=['post'], permission_classes=[permissions.AllowAny])
def custom(self, request, *args, **kwargs):
return Response({
'permission_classes': self.permission_classes
})
self.router = SimpleRouter()
self.router.register(r'test', TestViewSet, base_name='test')
self.view = self.router.urls[-1].callback
def test_action_kwargs(self):
request = factory.post('/test/0/custom/')
response = self.view(request)
self.assertEqual(
response.data,
{'permission_classes': [permissions.AllowAny]}
)
示例2: TestCustomLookupFields
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestCustomLookupFields(TestCase):
"""
Ensure that custom lookup fields are correctly routed.
"""
urls = 'tests.test_routers'
def setUp(self):
class NoteSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name='routertestmodel-detail', lookup_field='uuid')
class Meta:
model = RouterTestModel
fields = ('url', 'uuid', 'text')
class NoteViewSet(viewsets.ModelViewSet):
queryset = RouterTestModel.objects.all()
serializer_class = NoteSerializer
lookup_field = 'uuid'
self.router = SimpleRouter()
self.router.register(r'notes', NoteViewSet)
from tests import test_routers
urls = getattr(test_routers, 'urlpatterns')
urls += patterns(
'',
url(r'^', include(self.router.urls)),
)
RouterTestModel.objects.create(uuid='123', text='foo bar')
def test_custom_lookup_field_route(self):
detail_route = self.router.urls[-1]
detail_url_pattern = detail_route.regex.pattern
self.assertIn('<uuid>', detail_url_pattern)
def test_retrieve_lookup_field_list_view(self):
response = self.client.get('/notes/')
self.assertEqual(
response.data,
[{
"url": "http://testserver/notes/123/",
"uuid": "123", "text": "foo bar"
}]
)
def test_retrieve_lookup_field_detail_view(self):
response = self.client.get('/notes/123/')
self.assertEqual(
response.data,
{
"url": "http://testserver/notes/123/",
"uuid": "123", "text": "foo bar"
}
)
示例3: test_basename_argument_no_warnings
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
def test_basename_argument_no_warnings(self):
router = SimpleRouter()
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter('always')
router.register('mock', MockViewSet, basename='mock')
assert len(w) == 0
assert router.registry == [
('mock', MockViewSet, 'mock'),
]
示例4: test_viewset_action_with_null_schema
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
def test_viewset_action_with_null_schema(self):
class CustomViewSet(GenericViewSet):
@action(detail=True, schema=None)
def extra_action(self, pk, **kwargs):
pass
router = SimpleRouter()
router.register(r'detail', CustomViewSet, basename='detail')
generator = SchemaGenerator()
view = generator.create_view(router.urls[0].callback, 'GET')
assert view.schema is None
示例5: test_base_name_and_basename_assertion
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
def test_base_name_and_basename_assertion(self):
router = SimpleRouter()
msg = "Do not provide both the `basename` and `base_name` arguments."
with warnings.catch_warnings(record=True) as w, \
self.assertRaisesMessage(AssertionError, msg):
warnings.simplefilter('always')
router.register('mock', MockViewSet, 'mock', base_name='mock')
msg = "The `base_name` argument is pending deprecation in favor of `basename`."
assert len(w) == 1
assert str(w[0].message) == msg
示例6: test_base_name_argument_deprecation
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
def test_base_name_argument_deprecation(self):
router = SimpleRouter()
with warnings.catch_warnings(record=True) as w:
warnings.simplefilter('always')
router.register('mock', MockViewSet, base_name='mock')
msg = "The `base_name` argument has been deprecated in favor of `basename`."
assert len(w) == 1
assert str(w[0].message) == msg
assert router.registry == [
('mock', MockViewSet, 'mock'),
]
示例7: TestTrailingSlashIncluded
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestTrailingSlashIncluded(TestCase):
def setUp(self):
class NoteViewSet(viewsets.ModelViewSet):
model = RouterTestModel
self.router = SimpleRouter()
self.router.register(r"notes", NoteViewSet)
self.urls = self.router.urls
def test_urls_have_trailing_slash_by_default(self):
expected = ["^notes/$", "^notes/(?P<pk>[^/.]+)/$"]
for idx in range(len(expected)):
self.assertEqual(expected[idx], self.urls[idx].regex.pattern)
示例8: TestTrailingSlashIncluded
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestTrailingSlashIncluded(TestCase):
def setUp(self):
class NoteViewSet(viewsets.ModelViewSet):
queryset = RouterTestModel.objects.all()
self.router = SimpleRouter()
self.router.register(r'notes', NoteViewSet)
self.urls = self.router.urls
def test_urls_have_trailing_slash_by_default(self):
expected = ['^notes/$', '^notes/(?P<pk>[^/.]+)/$']
for idx in range(len(expected)):
assert expected[idx] == self.urls[idx].regex.pattern
示例9: TestTrailingSlashRemoved
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestTrailingSlashRemoved(TestCase):
def setUp(self):
class NoteViewSet(viewsets.ModelViewSet):
model = RouterTestModel
self.router = SimpleRouter(trailing_slash=False)
self.router.register(r'notes', NoteViewSet)
self.urls = self.router.urls
def test_urls_can_have_trailing_slash_removed(self):
expected = ['^notes$', '^notes/(?P<pk>[^/.]+)$']
for idx in range(len(expected)):
self.assertEqual(expected[idx], self.urls[idx].regex.pattern)
示例10: test_base_name_argument_deprecation
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
def test_base_name_argument_deprecation(self):
router = SimpleRouter()
with pytest.warns(RemovedInDRF311Warning) as w:
warnings.simplefilter('always')
router.register('mock', MockViewSet, base_name='mock')
msg = "The `base_name` argument is pending deprecation in favor of `basename`."
assert len(w) == 1
assert str(w[0].message) == msg
assert router.registry == [
('mock', MockViewSet, 'mock'),
]
示例11: TestTrailingSlashRemoved
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestTrailingSlashRemoved(TestCase):
def setUp(self):
class NoteViewSet(viewsets.ModelViewSet):
queryset = RouterTestModel.objects.all()
self.router = SimpleRouter(trailing_slash=False)
self.router.register(r'notes', NoteViewSet)
self.urls = self.router.urls
def test_urls_can_have_trailing_slash_removed(self):
expected = ['^notes$', '^notes/(?P<pk>[^/.]+)$']
for idx in range(len(expected)):
assert expected[idx] == get_regex_pattern(self.urls[idx])
示例12: TestSimpleRouter
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestSimpleRouter(URLPatternsTestCase, TestCase):
router = SimpleRouter()
router.register('basics', BasicViewSet, base_name='basic')
urlpatterns = [
url(r'^api/', include(router.urls)),
]
def setUp(self):
self.router = SimpleRouter()
def test_action_routes(self):
# Get action routes (first two are list/detail)
routes = self.router.get_routes(BasicViewSet)[2:]
assert routes[0].url == '^{prefix}/{lookup}/action1{trailing_slash}$'
assert routes[0].mapping == {
'post': 'action1',
}
assert routes[1].url == '^{prefix}/{lookup}/action2{trailing_slash}$'
assert routes[1].mapping == {
'post': 'action2',
'delete': 'action2',
}
assert routes[2].url == '^{prefix}/{lookup}/action3{trailing_slash}$'
assert routes[2].mapping == {
'post': 'action3',
'delete': 'action3_delete',
}
def test_multiple_action_handlers(self):
# Standard action
response = self.client.post(reverse('basic-action3', args=[1]))
assert response.data == {'post': '1'}
# Additional handler registered with MethodMapper
response = self.client.delete(reverse('basic-action3', args=[1]))
assert response.data == {'delete': '1'}
def test_register_after_accessing_urls(self):
self.router.register(r'notes', NoteViewSet)
assert len(self.router.urls) == 2 # list and detail
self.router.register(r'notes_bis', NoteViewSet)
assert len(self.router.urls) == 4
示例13: TestActionAppliedToExistingRoute
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestActionAppliedToExistingRoute(TestCase):
"""
Ensure `@detail_route` decorator raises an except when applied
to an existing route
"""
def test_exception_raised_when_action_applied_to_existing_route(self):
class TestViewSet(viewsets.ModelViewSet):
@detail_route(methods=["post"])
def retrieve(self, request, *args, **kwargs):
return Response({"hello": "world"})
self.router = SimpleRouter()
self.router.register(r"test", TestViewSet, base_name="test")
with self.assertRaises(ImproperlyConfigured):
self.router.urls
示例14: TestLookupValueRegex
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestLookupValueRegex(TestCase):
"""
Ensure the router honors lookup_value_regex when applied
to the viewset.
"""
def setUp(self):
class NoteViewSet(viewsets.ModelViewSet):
queryset = RouterTestModel.objects.all()
lookup_field = 'uuid'
lookup_value_regex = '[0-9a-f]{32}'
self.router = SimpleRouter()
self.router.register(r'notes', NoteViewSet)
self.urls = self.router.urls
def test_urls_limited_by_lookup_value_regex(self):
expected = ['^notes/$', '^notes/(?P<uuid>[0-9a-f]{32})/$']
for idx in range(len(expected)):
assert expected[idx] == get_regex_pattern(self.urls[idx])
示例15: TestCustomLookupFields
# 需要导入模块: from rest_framework.routers import SimpleRouter [as 别名]
# 或者: from rest_framework.routers.SimpleRouter import register [as 别名]
class TestCustomLookupFields(TestCase):
"""
Ensure that custom lookup fields are correctly routed.
"""
urls = "tests.test_routers"
def setUp(self):
class NoteSerializer(serializers.HyperlinkedModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name="routertestmodel-detail", lookup_field="uuid")
class Meta:
model = RouterTestModel
fields = ("url", "uuid", "text")
class NoteViewSet(viewsets.ModelViewSet):
queryset = RouterTestModel.objects.all()
serializer_class = NoteSerializer
lookup_field = "uuid"
self.router = SimpleRouter()
self.router.register(r"notes", NoteViewSet)
from tests import test_routers
urls = getattr(test_routers, "urlpatterns")
urls += patterns("", url(r"^", include(self.router.urls)))
RouterTestModel.objects.create(uuid="123", text="foo bar")
def test_custom_lookup_field_route(self):
detail_route = self.router.urls[-1]
detail_url_pattern = detail_route.regex.pattern
self.assertIn("<uuid>", detail_url_pattern)
def test_retrieve_lookup_field_list_view(self):
response = self.client.get("/notes/")
self.assertEqual(response.data, [{"url": "http://testserver/notes/123/", "uuid": "123", "text": "foo bar"}])
def test_retrieve_lookup_field_detail_view(self):
response = self.client.get("/notes/123/")
self.assertEqual(response.data, {"url": "http://testserver/notes/123/", "uuid": "123", "text": "foo bar"})