我只想尝试GUT或PUT到我的Django api。这一切都编译得很好,但每当我尝试通过网络界面进行PUT或GET时,我会得到以下消息:
HTTP 404 Not Found
Allow: GET, PUT, PATCH, DELETE, OPTIONS
Content-Type: application/json
Vary: Accept
{
"detail": "Not found."
}
我对Django很新,我不知道哪里出错,这是我的views.py文件:
from django.shortcuts import render
from rest_framework import viewsets
from rest_framework import permissions
from SecMeRe.models import Patient
from SecMeRe.serializers import PatientSerializer
# Create your views here.
class PatientViewSet(viewsets.ModelViewSet):
queryset = Patient.objects.all()
serializer_class = PatientSerializer
我的model.py
from __future__ import unicode_literals
from django.db import models
import uuid
class Patient(models.Model):
firstName = models.CharField(max_length=255)
lastName = models.CharField(max_length=255)
dob = models.DateField()
firstRecorded = models.DateField()
uniqueHash = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
和我的serializers.py
from SecMeRe.models import Patient
from rest_framework import serializers
class PatientSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Patient
fields = ('firstName', 'lastName', 'dob', 'firstRecorded', 'uniqueHash')
答案 0 :(得分:1)
在数据库中有记录之前,您无法获取任何内容。如果没有看到urls.py
定义,也很难说,但我假设您将/api/SecMeRe/patient/
设置为患者的列表视图。
您需要在患者的详细视图中进行PUT,这将是网址/api/SecMeRe/patient/353/
,其中353是您新患者记录的新主键。
同样,您可以在该网址上调用GET:/api/SecMeRe/patient/353/
如果您不想选择ID,请使用POST代替PUT,然后点击/api/SecMeRe/patient/
的原始网址。
PUT要求您每次调出ID的原因是因为它是幂等资源。您可以在网址上调用PUT 100次,结果会相同,因为您指定了创建和更新网址的ID。