Как указано в документации на метаданные [drf-doc] . Вы, вероятно, используете класс SimpleMetadata
[GitHub] . Здесь мы видим, что параметры определяются следующим образом:
def determine_metadata(self, request, view):
metadata = OrderedDict()
<b>metadata['name'] = view.get_view_name()</b>
metadata['description'] = view.get_view_description()
metadata['renders'] = [renderer.media_type for renderer in view.renderer_classes]
metadata['parses'] = [parser.media_type for parser in view.parser_classes]
if hasattr(view, 'get_serializer'):
actions = self.determine_actions(request, view)
if actions:
metadata['actions'] = actions
return metadata
get_view_name
для APIView
[GitHub] реализован как:
def get_view_name(self):
"""
Return the view name, as used in OPTIONS responses and in the
browsable API.
"""
func = <b>self.settings.VIEW_NAME_FUNCTION</b>
return func(self)
Таким образом, settings
будет по умолчанию определять имя функции, которая вычисляет представление. Это определяется настройкой VIEW_NAME_FUNCTION
[drf-doc] , по умолчанию 'rest_framework.views.get_view_name'
.
Если мы проверяем исходный код этого get_view_name
function [GitHub] , мы видим:
def get_view_name(view):
"""
Given a view instance, return a textual name to represent the view.
This name is used in the browsable API, and in OPTIONS responses.
This function is the default for the `VIEW_NAME_FUNCTION` setting.
"""
# Name may be set by some Views, such as a ViewSet.
name = <b>getattr(view, 'name', None)</b>
if name is not None:
return <b>name</b>
name = view.__class__.__name__
name = formatting.remove_trailing_string(name, 'View')
name = formatting.remove_trailing_string(name, 'ViewSet')
name = formatting.camelcase_to_spaces(name)
# Suffix may be set by some Views, such as a ViewSet.
suffix = getattr(view, 'suffix', None)
if suffix:
name += ' ' + suffix
return name
Если ваше представление, таким образом, содержит атрибут .name
, оно будет использовать его в качестве имени. Таким образом, вы можете реализовать APIView
как:
class SomeAPIView(APIView):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
<b>self.name = 'Another name than To Do List'</b>
Если атрибута name
нет, он, таким образом, примет имя представления, попытайтесь избавиться от View
или ViewSet
суффикс, преобразуйте верблюд в пробелы и при необходимости добавьте суффикс (например, 'List'
для ListAPIView
).