mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-26 19:43:59 +03:00
54 lines
1.5 KiB
Python
54 lines
1.5 KiB
Python
from djangorestframework.views import View
|
|
from djangorestframework.response import Response
|
|
from djangorestframework.permissions import PerUserThrottling, IsAuthenticated
|
|
from djangorestframework.reverse import reverse
|
|
|
|
|
|
class PermissionsExampleView(View):
|
|
"""
|
|
A container view for permissions examples.
|
|
"""
|
|
|
|
def get(self, request):
|
|
return Response([
|
|
{
|
|
'name': 'Throttling Example',
|
|
'url': reverse('throttled-resource', request)
|
|
},
|
|
{
|
|
'name': 'Logged in example',
|
|
'url': reverse('loggedin-resource', request)
|
|
},
|
|
])
|
|
|
|
|
|
class ThrottlingExampleView(View):
|
|
"""
|
|
A basic read-only View that has a **per-user throttle** of 10 requests per minute.
|
|
|
|
If a user exceeds the 10 requests limit within a period of one minute, the
|
|
throttle will be applied until 60 seconds have passed since the first request.
|
|
"""
|
|
|
|
permissions_classes = (PerUserThrottling,)
|
|
throttle = '10/min'
|
|
|
|
def get(self, request):
|
|
"""
|
|
Handle GET requests.
|
|
"""
|
|
return Response("Successful response to GET request because throttle is not yet active.")
|
|
|
|
|
|
class LoggedInExampleView(View):
|
|
"""
|
|
You can login with **'test', 'test'.** or use curl:
|
|
|
|
`curl -X GET -H 'Accept: application/json' -u test:test http://localhost:8000/permissions-example`
|
|
"""
|
|
|
|
permissions_classes = (IsAuthenticated, )
|
|
|
|
def get(self, request):
|
|
return Response('You have permission to view this resource')
|