2016-11-28 107 views
0

我只是想GET或PUT到我的Django API。這一切編譯罰款,但每次我嘗試通過Web界面我得到以下一封郵件PUT或GET:Django HTTP 404錯誤當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 

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

一nd myizersizers.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

如果您正在使用django'runserver',並且'DEBUG = True',請查看您的終端。錯誤消息應該像完整的回溯,並提供比django rest框架404錯誤更多的信息。 – DataSwede

回答

1

在數據庫中存在記錄之前,您無法獲取任何內容。如果沒有看到你的定義,很難說,但我假設你設置了/api/SecMeRe/patient/作爲患者的列表視圖。

您需要在病人的詳細視圖,這將是URL /api/SecMeRe/patient/353/其中353是你的新病歷的新的主鍵,將。

同樣,你可以再調用get訪問的URL:/api/SecMeRe/patient/353/

如果你想不關心選擇的ID,然後用它代替PUT POST,你可以打的/api/SecMeRe/patient/原始URL。

PUT要求你每次調出ID的原因是因爲它是一個冪等資源。你可以在URL上調用PUT 100次,並且它會有相同的結果,因爲你指定了創建和更新它的ID。