Rest `未指定basename`参数
我用django restframework创建了一个新项目 项目名称=框架 th project_app name=框架 fram.url.py: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/
"""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')