def get_json_data(self, context):
'''
Default implementation: remove some auto-injected but not
JSON-serializable context variables.
If self.context_json_filter is set to a collection such as list or
set, then it instead preserves only the key-value pairs whose key is
in the filter.
You may override this method to implement your own serialization and
context filtering process.
'''
if self.context_json_filter is None:
if isinstance(self, SingleObjectMixin):
name = self.get_context_object_name(self.object)
if name in context: del context[name]
if 'object' in context: del context['object']
if isinstance(self, ContextMixin):
if 'view' in context: del context['view']
return context
else:
return {k: v for k, v in context.items()
if k in self.context_json_filter}
python类SingleObjectMixin()的实例源码
def get_object(self, queryset=None):
"""
Override default behavior from django.views.generic.SingleObjectMixin
to exclusively get the Quip object by its uuid.
"""
if queryset is None:
queryset = self.get_queryset()
uuid = self.kwargs.get('uuid')
try:
queryset = queryset.filter(uuid=uuid)
obj = queryset.get()
except (ValidationError, ValueError, queryset.model.DoesNotExist):
# ValidationError and ValueError are to deal with malformed inputs
# that aren't valid uuids.
raise Http404(_("No %(verbose_name)s found matching the query") %
{'verbose_name': queryset.model._meta.verbose_name})
return obj