Я изучаю DRF и теперь немного растерялся.
Я настроил QuestionView
и QuestionSerializer
вот так.
views.py
class QuestionView(viewsets.ModelViewSet) :
queryset = models.Question.objects.all()
serializer_class = QuestionSerializer
def list(self, request, *args, **kwargs):
serializer = QuestionSerializer(models.Question.objects.all())
return Response(serializer.data)
serializer.py
class QuestionSerializer(serializers.ModelSerializer):
class Meta:
model= Question
fields= ("question_text", "owner", "pub_date")
urls.py
router = routers.DefaultRouter()
router.register('profile', cebula_views.SettingView)
router.register('question', cebula_views.QuestionView.as_view({
'get':'list',
}), 'userpage-question')
urlpatterns = [
...
url(r'^', include(router.urls)),
...
]
Файл "C: \ Users"\ 1Sun \ Cebula3 \ businessproject \ urls.py ", строка 34, в url (r '^', include (router.urls)), файл" C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ "lib \ site-packages \ rest_framework \ routers.py ", строка 101, в URL-адресах. self._urls = self.get_urls () Файл" C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ rest_framework \ routers.py ", строка 363, в get_urls urls = super (DefaultRouter, self) .get_urls () Файл" C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages\ rest_framework \ routers.py ", строка 261, в get_urls routs = self.get_routes (viewset) Файл" C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ rest_framework \ routers.py ", строка 176, в get_routes extra_actions = viewset.get_extra_actions ()AttributeError: у объекта 'function' нет атрибута 'get_extra_actions'
По моему мнению, это то, что я должен написать get_extra_actions
метод в QuestionView
классе, если так, как я пишу это?как это?
def get_extra_actions() :
return ???
Если нет, в чем проблема?
[Редактировать]
, когда я стираю .as_view () вurl part и напишите как router.register('question', cebula_views.QuestionView, 'userpage-question')
ошибка:
Необработанное исключение в потоке, начатом .wrapper с 0x00000283172D3D08> Traceback (последний вызов был последним): Файл "C: \Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ utils \ autoreload.py ", строка 225, в оболочке fn (* args, ** kwargs) Файл" C: \ Users \1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ core \ management \ commands \ runserver.py ", строка 120, в файле inner_run self.check (display_num_errors = True) Файл" C: \ Users "\ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ core \ management \ base.py ", строка 364, в проверке include_deployment_checks = include_deployment_checks, файл" C: \ Users \ 1Sun \ AppData \ "Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ core \ management \ base.py ", строка 351, в _run_checks возвращает check.run_checks (** kwargs) FiФайл "C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ core \ check \ registry.py", строка 73, в файле run_checks new_errors = check (app_configs = app_configs)"C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ core \ check \ urls.py", строка 13, в check_url_config, возвращать файл check_resolver (resolver), "C: \Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ core \ check \ urls.py ", строка 23, в check_resolver, возвращает файл check_method (), файл" C: \ Users \ 1Sun \ AppData "\ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ urls \ resolvers.py ", строка 397, для проверки шаблона в self.url_patterns: файл" C: \ Users \ 1Sun \ AppData \ Local \ Programs\ Python \ Python36 \ lib \ site-packages \ django \ utils \ functions.py ", строка 36, в get res = instance. dict [self.name] = self.func (экземпляр) Файл "C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ urls \ resolvers.py", строка 536, в шаблонах url_patterns = getattr (self.urlconf_module, "urlpatterns", self.urlconf_module) Файл "C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ utils \ functions.py", строка 36, в get res = instance. dict [self.name] = self.func (instance) Файл "C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36\ lib \ site-packages \ django \ urls \ resolvers.py ", строка 529, в urlconf_module возвращает файл import_module (self.urlconf_name)" C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ importlib__init__.py ", строка 126, в файле import_moduleвернуть _bootstrap._gcd_import (имя [уровень:], пакет, уровень) Файл "", строка 994, в файле _gcd_import "", строка 971, в файле _find_and_load "", строка 955, в файле _find_and_load_unlocked "", строка 665, в_load_unlocked
Файл "", строка 678, в файле exec_module "", строка 219, в файле _call_with_frames_removed "C: \ Users \ 1Sun \ Cebula3 \ businessproject \ urls.py", строка 31, в url (r '^ cebula/',include('cebula.urls',namespace='cebula ')), файл "C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ urls \ conf.py ", строка 34, в том числе urlconf_module = import_module (urlconf_module) Файл" C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ importlib__init __. py ", строка 126, в import_module возвращает _bootstrap._gcd_import (имя [уровень:], пакет, уровень) Файл "", строка 994, в файле _gcd_import "", строка 971, в файле _find_and_load "", строка 955, в файле _find_and_load_unlocked "", строка 665, в файле _load_unlocked
"", строка 678, в файле exec_module "", строка 219, в _call_with_frames_removed файл "C: \ Users \ 1Sun \ Cebula3 \ cebula \ urls.py", строка 15, в URL (r '^ question / $', views.QuestionView.as_view (), name = 'question'), File "C: \ Users \ 1Sun \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ rest_framework \ viewsets.py ", строка 68, в as_view повысить TypeError (" Аргумент actions
должен быть указан, когда "TypeError: Аргумент actions
должен быть предоставлен при вызове .as_view()
в ViewSet.Например .as_view({'get': 'list'})