PUT或GET时出现Django HTTP 404错误

时间:2016-11-28 00:33:51

标签: python django http-status-code-404

我只想尝试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."
}

enter image description here

我对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')

1 个答案:

答案 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。