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

未指定`basename`参数- DJANGO REST框架
EN

Stack Overflow用户
提问于 2021-02-02 23:02:49
回答 1查看 245关注 0票数 0

我是Django的新手,想要建立一个API服务器。

但是,当我注册ModelViewSet时,我得到了标题中显示的错误。

型号:

代码语言:javascript
复制
from django.db import models
from django.core.exceptions import ValidationError

class User(models.Model):
    telegram_id = models.CharField(max_length=50)
    mail = models.CharField(max_length=100, default="None")
    password = models.CharField(max_length=100, default="None")
    is_group = models.BooleanField(default=False)
    priority = models.IntegerField(default=10)
    max_watches = models.IntegerField(default=5)
    current_watches = models.IntegerField(default=0)
    notification_rate = models.IntegerField(default=3600)
    watches = models.ManyToManyField('Url', through="Watch")

    def save(self, *args, **kwargs):
        if self.current_watches > self.max_watches:
            raise ValidationError("Límite de enlaces alcanzado")
        super().save(*args, **kwargs)

    def __str__(self):
        return self.telegram_id

序列化程序:

代码语言:javascript
复制
from rest_framework import serializers
from hermes.models import User


class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = '__all__'

ViewSet:

代码语言:javascript
复制
from rest_framework import viewsets

import hermes.models as models
import hermes.serializers.UserSerializer as UserSerializer

class UserViewSet(viewsets.ModelViewSet):
    queryset = models.User.objects.all()
    serializer_class = UserSerializer

路由器:

代码语言:javascript
复制
from hermes.ViewSets import UserViewSet
from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'users/', UserViewSet)

应用程序中的路由器:

代码语言:javascript
复制
from django.contrib import admin
from django.urls import path, include
from hermes.urls import router

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/', include(router.urls))
]

我还按照它的建议在路由器的末尾添加了基本名称参数,但再次失败,因为它没有属性get_extra_actions。当我定义该方法时,它仍然会引发相同的错误。我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-02-04 10:58:40

在视图集的定义中,删除模型并重定义,如下所示:

代码语言:javascript
复制
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()

也不需要以'/‘结束你的url模式,可以去掉它,所以router.register(r'users/', UserViewSet)应该是:router.register(r'users', UserViewSet)

如果您看到根API,您会注意到有两个//否则

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

https://stackoverflow.com/questions/66012294

复制
相关文章

相似问题

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