本文整理汇总了Python中rest_framework.request.clone_request函数的典型用法代码示例。如果您正苦于以下问题:Python clone_request函数的具体用法?Python clone_request怎么用?Python clone_request使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了clone_request函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: get_schema
def get_schema(self, request=None):
if request is None:
endpoints = self.endpoints
else:
# Filter the list of endpoints to only include those that
# the user has permission on.
endpoints = []
for key, link, callback in self.endpoints:
method = link.action.upper()
view = callback.cls()
view.request = clone_request(request, method)
view.format_kwarg = None
try:
view.check_permissions(view.request)
except exceptions.APIException:
pass
else:
endpoints.append((key, link, callback))
if not endpoints:
return None
# Generate the schema content structure, from the endpoints.
# ('users', 'list'), Link -> {'users': {'list': Link()}}
content = {}
for key, link, callback in endpoints:
insert_into(content, key, link)
# Return the schema document.
return coreapi.Document(title=self.title, content=content, url=self.url)
开发者ID:AndreasBackx,项目名称:django-rest-framework,代码行数:30,代码来源:schemas.py
示例2: get_form
def get_form(self, view, method, request):
"""
Get a form, possibly bound to either the input or output data.
In the absence on of the Resource having an associated form then
provide a form that can be used to submit arbitrary content.
"""
obj = getattr(view, 'object', None)
cloned_request = clone_request(request, method)
if not self.show_form_for_method(view, method, cloned_request, obj):
return
if method in ('DELETE', 'OPTIONS'):
return True # Don't actually need to return a form
if not getattr(view, 'get_serializer', None) or not parsers.FormParser in view.parser_classes:
return
serializer = view.get_serializer(instance=obj, request=cloned_request)
fields = self.serializer_to_form_fields(serializer)
# Creating an on the fly form see:
# http://stackoverflow.com/questions/3915024/dynamically-creating-classes-python
OnTheFlyForm = type(str("OnTheFlyForm"), (forms.Form,), fields)
data = (obj is not None) and serializer.data or None
form_instance = OnTheFlyForm(data)
return form_instance
开发者ID:shauns,项目名称:django-rest-framework,代码行数:27,代码来源:renderers.py
示例3: metadata
def metadata(self, request):
"""
Return a dictionary of metadata about the view.
Used to return responses for OPTIONS requests.
We override the default behavior, and add some extra information
about the required request body for POST and PUT operations.
"""
ret = super(GenericAPIView, self).metadata(request)
actions = {}
for method in ('PUT', 'POST'):
if method not in self.allowed_methods:
continue
cloned_request = clone_request(request, method)
try:
# Test global permissions
self.check_permissions(cloned_request)
# Test object permissions
if method == 'PUT':
self.get_object()
except (exceptions.APIException, PermissionDenied, Http404):
pass
else:
# If user has appropriate permissions for the view, include
# appropriate metadata about the fields that should be supplied.
serializer = self.get_serializer()
actions[method] = serializer.metadata()
if actions:
ret['actions'] = actions
return ret
开发者ID:Bazzinga,项目名称:django-introspective-api,代码行数:34,代码来源:generics.py
示例4: update
def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
self.object = None
try:
self.object = self.get_object()
except Http404:
# If this is a PUT-as-create operation, we need to ensure that
# we have relevant permissions, as if this was a POST request.
if not self.has_permission(clone_request(request, 'POST')):
self.permission_denied(self.request)
created = True
success_status_code = status.HTTP_201_CREATED
else:
created = False
success_status_code = status.HTTP_200_OK
serializer = self.get_serializer(self.object, data=request.DATA,
files=request.FILES, partial=partial)
if serializer.is_valid():
self.pre_save(serializer.object)
self.object = serializer.save()
self.post_save(self.object, created=created)
return Response(serializer.data, status=success_status_code)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
开发者ID:jtwaleson,项目名称:django-rest-framework,代码行数:26,代码来源:mixins.py
示例5: update
def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
self.object = None
try:
self.object = self.get_object()
except Http404:
# If this is a PUT-as-create operation, we need to ensure that
# we have relevant permissions, as if this was a POST request.
self.check_permissions(clone_request(request, 'POST'))
created = True
save_kwargs = {'force_insert': True}
success_status_code = status.HTTP_201_CREATED
else:
created = False
save_kwargs = {'force_update': True}
success_status_code = status.HTTP_200_OK
serializer = self.get_serializer(self.object, data=request.DATA,
files=request.FILES, partial=partial)
if serializer.is_valid():
self.pre_save(serializer.object)
self.object = serializer.save(**save_kwargs)
self.post_save(self.object, created=created)
return Response({
'success': True,
'data': serializer.data,
'message': "",
}, status=success_status_code)
return Response({
'success': False,
'data': {},
'message': repr(serializer.errors),
}, status=status.HTTP_400_BAD_REQUEST)
开发者ID:linovia,项目名称:django-rest-framework-extjs,代码行数:35,代码来源:views.py
示例6: get_actions
def get_actions(self, request, view):
"""
For generic class based views we return information about
the fields that are accepted for 'PUT' and 'POST' methods.
"""
actions = {}
print
for method in {'PUT', 'POST'} & set(view.allowed_methods):
view.request = clone_request(request, method)
try:
# Test global permissions
if hasattr(view, 'check_permissions'):
view.check_permissions(view.request)
# Test object permissions
if method == 'PUT' and hasattr(view, 'get_object'):
view.get_object()
except (exceptions.APIException, PermissionDenied, Http404):
pass
else:
# If user has appropriate permissions for the view, include
# appropriate metadata about the fields that should be supplied.
serializer = view.get_serializer()
actions[method] = self.get_serializer_info2(serializer)
finally:
view.request = request
return actions
开发者ID:jacktrades,项目名称:api-browser,代码行数:27,代码来源:metadata.py
示例7: create
def create(self, request, *args, **kwargs):
project = get_object_or_404(Project, id=self.kwargs.get('project_id', None))
if hasattr(project, 'view_invite'):
#when view invite already exists then return the existing view invite:
return self.retrieve(clone_request(request, 'GET'), *args, **kwargs)
self.check_object_permissions(self.request, project)
return super(ViewInviteDetail, self).create(request, *args, **kwargs)
开发者ID:omni360,项目名称:inspiration-edu-api,代码行数:7,代码来源:invite_views.py
示例8: update
def update(self, request, *args, **kwargs):
partial = kwargs.pop("partial", False)
extra_kwargs = {}
try:
instance = self.get_object()
except Http404:
# this is derived from https://gist.github.com/tomchristie/a2ace4577eff2c603b1b
# and supports PUT as create.
if self.request.method == "PUT":
# For PUT-as-create operation, we need to ensure that we have
# relevant permissions, as if this was a POST request. This
# will either raise a PermissionDenied exception, or simply
# return None.
self.check_permissions(clone_request(self.request, "POST"))
instance = None
extra_kwargs.update({"id": kwargs["user_id"], "external_id": kwargs["user_id"]})
else:
# PATCH requests where the object does not exist should still
# return a 404 response.
raise
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
serializer.save(**extra_kwargs)
return Response(serializer.data)
开发者ID:harish211,项目名称:discussions,代码行数:25,代码来源:views.py
示例9: _get_actions
def _get_actions(self, request, view):
"""Return a JSON Schema for GET, PATCH, PUT, and POST methods."""
if not hasattr(view, 'get_serializer'):
return None
actions = OrderedDict()
for method in ('GET', 'POST', 'PUT', 'PATCH'):
if method in view.allowed_methods:
view.request = clone_request(request, method)
try:
# Test global permissions
if hasattr(view, 'check_permissions'):
view.check_permissions(view.request)
# Test object permissions
if method == 'PATCH' and hasattr(view, 'get_object'):
view.get_object()
if method == 'PUT' and hasattr(view, 'get_object'):
view.get_object()
except (exceptions.APIException, PermissionDenied, Http404):
pass
else:
# If user has appropriate permissions for the view, include
# appropriate metadata about the fields that should be
# supplied.
serializer = view.get_serializer()
actions[method] = self._get_serializer_fields(serializer)
finally:
view.request = request
return actions
开发者ID:jacktrades,项目名称:api-browser,代码行数:30,代码来源:metadata.py
示例10: get_object_or_none
def get_object_or_none(self):
try:
return self.get_object()
except Http404:
# If this is a PUT-as-create operation, we need to ensure that
# we have relevant permissions, as if this was a POST request.
# This will either raise a PermissionDenied exception,
# or simply return None
self.check_permissions(clone_request(self.request, "POST"))
开发者ID:flashingpumpkin,项目名称:django-rest-framework,代码行数:9,代码来源:mixins.py
示例11: metadata
def metadata(self, request):
"""
Return a dictionary of metadata about the view.
Used to return responses for OPTIONS requests.
We override the default behavior, and add some extra information
about the required request body for POST and PUT operations.
"""
ret = super(GenericAPIView, self).metadata(request)
actions = {}
for method in ('PUT', 'POST'):
if method not in self.allowed_methods:
continue
original_request = clone_request(request, request.method)
self.request = clone_request(request, method)
try:
# Test global permissions
self.check_permissions(self.request)
# Test object permissions
if method == 'PUT':
try:
self.get_object()
except Http404:
# Http404 should be acceptable and the serializer
# metadata should be populated. Except this so the
# outer "else" clause of the try-except-else block
# will be executed.
pass
except (exceptions.APIException, PermissionDenied):
pass
else:
# If user has appropriate permissions for the view, include
# appropriate metadata about the fields that should be supplied.
serializer = self.get_serializer()
actions[method] = serializer.metadata()
self.request = original_request
if actions:
ret['actions'] = actions
return ret
开发者ID:NadavK,项目名称:django-rest-framework,代码行数:43,代码来源:generics.py
示例12: get_context
def get_context(self, request):
request = clone_request(request, request.method)
if "current_page" in request.GET:
# Runs through regex in order to clean up potential double quoted strings.
request.path = request.path_info = re.sub(r'^"|"$', '', request.GET["current_page"])
self.process_request(request)
self.context["request"] = request
return self.context
开发者ID:inonit,项目名称:djangocms-restapi,代码行数:10,代码来源:views.py
示例13: _get_view_queryset
def _get_view_queryset(self, view_class, user_field_qs, with_embed_list=None):
#get the queryset from the view:
view_instance = view_class(lookup_url_kwarg='user_pk')
view_instance.args = self.args
view_instance.kwargs = self.kwargs
view_instance.request = clone_request(self.request, self.request.method)
view_instance.queryset = user_field_qs
view_instance.initial(view_instance.request, self.args, self.kwargs)
if with_embed_list:
view_instance.embed_list += with_embed_list
return view_instance.filter_queryset(view_instance.get_queryset())
开发者ID:omni360,项目名称:inspiration-edu-api,代码行数:11,代码来源:user_views.py
示例14: _get_raw_data_form
def _get_raw_data_form(self, view, method, request, media_types):
# We need to impersonate a request with the correct method,
# so that eg. any dynamic get_serializer_class methods return the
# correct form for each method.
restore = view.request
request = clone_request(request, method)
view.request = request
try:
return self.get_raw_data_form(view, method, request, media_types)
finally:
view.request = restore
开发者ID:andymckay,项目名称:django-rest-framework,代码行数:11,代码来源:renderers.py
示例15: create
def create(self, request, *args, **kwargs):
bulk = isinstance(request.data, list)
#if not bulk, use regular create:
if not bulk:
return super(BulkUpdateWithCreateMixin, self).create(request, *args, **kwargs)
#if bulk, use bulk create as bulk update:
else:
self.request = clone_request(request, 'PUT')
return self.bulk_update(self.request, *args, **kwargs)
开发者ID:omni360,项目名称:inspiration-edu-api,代码行数:11,代码来源:mixins.py
示例16: determine_actions
def determine_actions(self, request, view):
"""
For generic class based views we return information about
the fields that are accepted for 'PUT' and 'POST' methods.
"""
actions = {}
for method in set(['PUT', 'POST']) & set(view.allowed_methods):
view.request = clone_request(request, method)
serializer = view.get_serializer()
actions[method] = self.get_serializer_info(serializer)
view.request = request
return actions
开发者ID:GladysIvy,项目名称:mfl_api,代码行数:13,代码来源:metadata.py
示例17: check_team_permissions
def check_team_permissions(self, request, teamid, orgid=None):
if orgid is not None:
team = get_object_or_404(
SeedTeam, pk=teamid, organization_id=orgid)
else:
team = get_object_or_404(SeedTeam, pk=teamid)
permission = permissions.TeamPermission()
fake_request = clone_request(request, 'PUT')
if not permission.has_object_permission(fake_request, self, team):
self.permission_denied(
request, message=getattr(permission, 'message', None)
)
return team
开发者ID:praekelt,项目名称:seed-auth-api,代码行数:14,代码来源:views.py
示例18: get_object_or_none
def get_object_or_none(self):
try:
return self.get_object()
except Http404:
if self.request.method == 'PUT':
# For PUT-as-create operation, we need to ensure that we have
# relevant permissions, as if this was a POST request. This
# will either raise a PermissionDenied exception, or simply
# return None.
self.check_permissions(clone_request(self.request, 'POST'))
else:
# PATCH requests where the object does not exist should still
# return a 404 response.
raise
开发者ID:etnperlong,项目名称:mese2014,代码行数:14,代码来源:mixins.py
示例19: show_form_for_method
def show_form_for_method(self, view, method, request, obj):
"""
Returns True if a form should be shown for this method.
"""
if not method in view.allowed_methods:
return # Not a valid method
if not api_settings.FORM_METHOD_OVERRIDE:
return # Cannot use form overloading
try:
view.check_permissions(clone_request(request, method))
except exceptions.APIException:
return False # Doesn't have permissions
return True
开发者ID:vshih,项目名称:django-rest-framework,代码行数:15,代码来源:renderers.py
示例20: get_schema
def get_schema(self, request=None):
if self.endpoints is None:
self.endpoints = self.get_api_endpoints(self.patterns)
links = []
for path, method, category, action, callback in self.endpoints:
view = callback.cls()
for attr, val in getattr(callback, 'initkwargs', {}).items():
setattr(view, attr, val)
view.args = ()
view.kwargs = {}
view.format_kwarg = None
actions = getattr(callback, 'actions', None)
if actions is not None:
if method == 'OPTIONS':
view.action = 'metadata'
else:
view.action = actions.get(method.lower())
if request is not None:
view.request = clone_request(request, method)
try:
view.check_permissions(view.request)
except exceptions.APIException:
continue
else:
view.request = None
link = self.get_link(path, method, callback, view)
links.append((category, action, link))
if not links:
return None
# Generate the schema content structure, eg:
# {'users': {'list': Link()}}
content = {}
for category, action, link in links:
if category is None:
content[action] = link
elif category in content:
content[category][action] = link
else:
content[category] = {action: link}
# Return the schema document.
return coreapi.Document(title=self.title, content=content, url=self.url)
开发者ID:BookUpStudyGroups,项目名称:Django_Server,代码行数:48,代码来源:schemas.py
注:本文中的rest_framework.request.clone_request函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论