首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未指定`basename`参数

未指定`basename`参数
EN

Stack Overflow用户
提问于 2020-11-11 23:58:11
回答 1查看 147关注 0票数 0

我通过django restframework创建了一个新项目,项目名称= frame th project_app name= framework

fram.urls.py:

代码语言:javascript
复制
"""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)),
]

框架models.py:

代码语言:javascript
复制
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)

serializer.py

代码语言:javascript
复制
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:

代码语言:javascript
复制
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:

代码语言:javascript
复制
from django.contrib import admin
from .models import Task


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

setting.py:

代码语言:javascript
复制
INSTALLED_APPS = [
    'framework',
    'rest_framework',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

当我在CMD中运行服务器时,出现以下错误:

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

EN

回答 1

Stack Overflow用户

发布于 2020-11-12 09:53:16

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

代码语言:javascript
复制
class MyViewSet(viewsets.ModelViewSet):
    queryset = Task.objects.all().order_by('date_created')

    serializer_class = TaskSerializers

文档:https://www.django-rest-framework.org/api-guide/viewsets/#modelviewset

另外,我建议您在注册视图集时始终指定basename。如下所示:

代码语言:javascript
复制
router = routers.DefaultRouter();
router.register('task', MyViewSet, basename='tasks')

https://www.django-rest-framework.org/api-guide/routers/#usage

URL用于创建的

名称的基础。如果未设置,则将根据视图集的queryset属性(如果有)自动生成基名。请注意,如果视图集不包括queryset属性,则在注册视图集时必须设置basename

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64789810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档