获取Python Django Rest框架代码的错误

2024-10-01 13:40:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python方面Django的新手。我有一个名为“corr_end”的python Django项目,其中有一个名为“send_values”的应用程序

我编写了一个序列化程序,试图使get/put/post/delete方法可用,并完成Postman测试

当我尝试get方法时,它在Postman中不起作用,并给我一个错误

我非常感谢你在这方面的帮助。多谢各位

网址:http://127.0.0.1:8000/values/dinos

来自终端的错误:

来自终端的错误:

内部服务器错误:/values/dinos TypeError:\uuuu init\uuuuuu()接受1个位置参数,但提供了2个 [19/Mar/2020 07:02:00]“GET/values/dinos HTTP/1.1”500 63860

回溯(最近一次呼叫最后一次): 文件“[redact]/anaconda3/envs/chipseq/lib/python3.6/site packages/django/core/handlers/exception.py”,第34行,在内部 响应=获取响应(请求) 文件“[redacted]/anaconda3/envs/chipseq/lib/python3.6/site packages/django/core/handlers/base.py”,第115行,在“获取”响应中 response=self.process\u异常\u由\u中间件(e,请求) 文件“[redacted]/anaconda3/envs/chipseq/lib/python3.6/site packages/django/core/handlers/base.py”,第113行,在“获取”响应中 response=wrapped\u callback(请求,*callback\u args,**callback\u kwargs)

我在send_values目录下创建了一个Python包“api”,其中send_values_api.py包含序列化程序

from rest_framework.exceptions import ValidationError
from rest_framework.serializers import ModelSerializer
from rest_framework.viewsets import ModelViewSet
from ..models import Dinosaur

class DinoSerializer(ModelSerializer):
    class Meta:
        model = Dinosaur
        fields = ['name', 'age', 'species']

    def validate(self, userData):
        if not userData['name']:
            print('name is required')
            return ValidationError
        return userData

    def create(self, userData):
        newDinosaur = Dinosaur.objects.create(**userData)
        newDinosaur.save()
        return newDinosaur

    def update(self, existingDinosaur, userData):
        fields = ['name', 'age', 'species']
        for i in fields:
            fieldValue = userData.get(i, getattr(existingDinosaur, i))
            setattr(existingDinosaur, i, fieldValue)
        existingDinosaur.save()
        return existingDinosaur

class DinoViewSet(ModelViewSet):
    serializer_class = DinoSerializer
    http_method_names = ['get', 'post', 'put', 'delete', 'options']
    queryset = Dinosaur.objects.all()

models.py文件:

from django.db import models
from django.utils import timezone

# Create your models here.
class Correlations(models.Model):
    message = models.CharField(max_length=100)
    score = models.TextField()
    executed = models.CharField(max_length=100)
    created_at = models.DateTimeField(default=timezone.now)

class Dinosaur(models.Model):
    age = models.PositiveIntegerField()
    species = models.TextField()
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name

发送值中的url.py:

from .api.send_values_api import DinoViewSet
from django.conf.urls import url

urlpatterns = [
    url('dinos', DinoViewSet),
]

注意:views.py文件中没有代码


Tags: 文件djangonamefrompyimportselfsend
1条回答
网友
1楼 · 发布于 2024-10-01 13:40:58

^{}Views不同。不能像视图那样直接将它们添加到URL。这里最简单的解决方案是像这样使用^{}

from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'dinos', DinoViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

相关问题 更多 >