【发布时间】:2020-03-19 15:15:23
【问题描述】:
我是 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: __init__() 接受 1 个位置参数,但给出了 2 个 [19/Mar/2020 07:02:00] "GET /values/dinos HTTP/1.1" 500 63860
回溯(最近一次通话最后一次): 文件“[redacted]/anaconda3/envs/chipseq/lib/python3.6/site-packages/django/core/handlers/exception.py”,第 34 行,在内部 响应 = get_response(请求) _get_response 中的文件“[redacted]/anaconda3/envs/chipseq/lib/python3.6/site-packages/django/core/handlers/base.py”,第 115 行 response = self.process_exception_by_middleware(e, request) _get_response 中的文件“[redacted]/anaconda3/envs/chipseq/lib/python3.6/site-packages/django/core/handlers/base.py”,第 113 行 response = Wrapped_callback(request, *callback_args, **callback_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
send_values 中的 urls.py:
from .api.send_values_api import DinoViewSet
from django.conf.urls import url
urlpatterns = [
url('dinos', DinoViewSet),
]
注意:views.py 文件中没有代码。
【问题讨论】:
标签: python django rest postman serialization