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。
我只是想 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。