Rest `未指定basename`参数

Rest `未指定basename`参数,rest,django-rest-framework,frameworks,Rest,Django Rest Framework,Frameworks,我用django restframework创建了一个新项目 项目名称=框架 th project_app name=框架 fram.url.py: """frame URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/3.1/topics/http/

我用django restframework创建了一个新项目 项目名称=框架 th project_app name=框架

fram.url.py:

"""frame URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/3.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path,re_path
from django.conf.urls import include,url
from framework.views import myviewset
from rest_framework import routers

router = routers.DefaultRouter();
router.register('task', myviewset)

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'', include(router.urls)),
]
framework models.py:

from django.db import models

# Create your models here.
class Task (models.Model):
    task_name=models.CharField(max_length='200')
    task_desc=models.CharField(max_length='200')
    date_created=models.DateTimeField(auto_now=True)
序列化程序.py

from .models import Task
from rest_framework import serializers


class TaskSerializers(serializers.ModelSerializer):
    class Meta:
        model = Task
        fields = ('id', 'task_name', 'task_desc')
views.py:

from django.shortcuts import render
from .serializer import TaskSerializers
from rest_framework import viewsets
from .models import Task


# Create your views here.
class myviewset(viewsets.ModelViewSet):
    query = Task.objects.all().order_by('date_created')

    serializer_class = TaskSerializers
admin.py:

from django.contrib import admin
from .models import Task


admin.site.register(Task)
# Register your models here.
setting.py:

INSTALLED_APPS = [
    'framework',
    'rest_framework',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
当我在CMD中运行th服务器时 此错误来自:


AssertionError:
basename
参数未指定,无法从视图集中自动确定名称,因为它没有
.queryset
属性。

您应该在视图集中指定
queryset
属性,而不是
query
。例如(类名案例更改为符合PEP8):

文件:

另外,我建议在注册视图集时始终指定
basename
。像这样:

router = routers.DefaultRouter();
router.register('task', MyViewSet, basename='tasks')

basename
-用于创建的URL名称的基。如果取消设置,则将根据viewset的
queryset
属性(如果有)自动生成basename。请注意,如果视图集不包含
queryset
属性,则在注册视图集时必须设置
basename

router = routers.DefaultRouter();
router.register('task', MyViewSet, basename='tasks')