PUT 或 GET 时 Django HTTP 404 错误

Django HTTP 404 error when PUT or GET

我只是想 GET 或 PUT 到我的 Django api。一切都可以正常编译,但每次我尝试通过 Web 界面 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

我的modesl.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')

在数据库中没有记录之前,您无法获取任何内容。如果没有看到您的 urls.py 定义也很难说,但我假设您将 /api/SecMeRe/patient/ 设置为患者的列表视图。

您需要在患者的详细视图中进行 PUT,即 url /api/SecMeRe/patient/353/,其中 353 是新患者记录的新主键。

同样,您可以在 URL 上调用 GET:/api/SecMeRe/patient/353/

不想选ID就用POST代替PUT,就可以打到/api/SecMeRe/patient/的原url了。

PUT 每次都要求你调用 ID 的原因是因为它是一个幂等资源。您可以在 url 上调用 PUT 100 次,它会得到相同的结果,因为您指定了用于创建它和更新它的 ID。