Django,url 未找到 404
Django, url not found 404
Project Folder structure
我是 django 的新手。我正在尝试创建一个简单的 rest api 端点,但我得到了 404。我确定我缺少一些设置。
models.py
class DisplayItems(models.Model):
yesNo = models.CharField(max_length=10)
yogaMessage = models.CharField(max_length=50)
yogaTimeMessage = models.CharField(max_length=100)
@classmethod
def create(cls, yesNo, yogaMessage, yogaTimeMessage):
displayItems = cls(yesNo=yesNo, yogaMessage=yogaMessage, yogaTimeMessage=yogaTimeMessage)
return displayItems
serializers.py
from .models import DisplayItems
class DisplayItemsSerializer(serializers.ModelSerializer):
yesNo = serializers.CharField(max_length=10)
yogaMessage = serializers.CharField(max_length=50)
yogaTimeMessage = serializers.CharField(max_length=100)
class Meta:
model = DisplayItems
fields = ('__all__')
urls.py
from .views import DisplayItemsViews
from django.contrib import admin
urlpatterns = [
path(r'^admin/', admin.site.urls),
path(r'^zzz/', DisplayItemsViews.as_view()),
]
views.py
from rest_framework.response import Response
from rest_framework import status
from .serializers import DisplayItemsSerializer
from .models import DisplayItems
class DisplayItemsViews(APIView):
def get(self, request):
displayItems = DisplayItems.create("YES!", "There's yoga today", "At 2:00 pm Eastern Time")
serializer = DisplayItemsSerializer(displayItems)
return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)
我正在尝试 运行 的 url 是 http://127.0.0.1:8000/zzz/
我已经阅读了几乎所有相关的 Whosebug 帖子,但似乎无法理解我遗漏了什么。
三件事:
1 - 您是否在 settings.py
的 INSTALLED_APPS
中安装了 rest_framework
?
2 - urls.py
中的 path()
不应包含 r'^
部分,这意味着正确的路径是 path('admin/', admin.site.urls)
和 path('zzz/', DisplayItemsViews.as_view())
。这是 Django 建议使用 url()
而不是 path()
时的旧行为
3 - 我假设您已经在 views.py
中导入了 APIView
,如果没有,您需要 from rest_framework.views import APIView
编辑:我的工作本地版本。
views.py
from rest_framework.response import Response
from rest_framework import status
from rest_framework.views import APIView
from .serializers import DisplayItemsSerializer
from .models import DisplayItems
class DisplayItemsViews(APIView):
def get(self, request):
displayItems = DisplayItems.create("YES!", "There's yoga today", "At 2:00 pm Eastern Time")
serializer = DisplayItemsSerializer(displayItems)
return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'base',
'rest_framework'
]
urls.py
from django.contrib import admin
from django.urls import path
from base.views import DisplayItemsViews
urlpatterns = [
path('admin/', admin.site.urls),
path('zzz/', DisplayItemsViews.as_view())
]
models.py
class DisplayItems(models.Model):
yesNo = models.CharField(max_length=10)
yogaMessage = models.CharField(max_length=50)
yogaTimeMessage = models.CharField(max_length=100)
@classmethod
def create(cls, yesNo, yogaMessage, yogaTimeMessage):
displayItems = cls(yesNo=yesNo, yogaMessage=yogaMessage, yogaTimeMessage=yogaTimeMessage)
return displayItems
serializers.py
from rest_framework import serializers
from .models import DisplayItems
class DisplayItemsSerializer(serializers.ModelSerializer):
yesNo = serializers.CharField(max_length=10)
yogaMessage = serializers.CharField(max_length=50)
yogaTimeMessage = serializers.CharField(max_length=100)
class Meta:
model = DisplayItems
fields = ('__all__')
结果在 localhost:8080/zzz
Project Folder structure
我是 django 的新手。我正在尝试创建一个简单的 rest api 端点,但我得到了 404。我确定我缺少一些设置。 models.py
class DisplayItems(models.Model):
yesNo = models.CharField(max_length=10)
yogaMessage = models.CharField(max_length=50)
yogaTimeMessage = models.CharField(max_length=100)
@classmethod
def create(cls, yesNo, yogaMessage, yogaTimeMessage):
displayItems = cls(yesNo=yesNo, yogaMessage=yogaMessage, yogaTimeMessage=yogaTimeMessage)
return displayItems
serializers.py
from .models import DisplayItems
class DisplayItemsSerializer(serializers.ModelSerializer):
yesNo = serializers.CharField(max_length=10)
yogaMessage = serializers.CharField(max_length=50)
yogaTimeMessage = serializers.CharField(max_length=100)
class Meta:
model = DisplayItems
fields = ('__all__')
urls.py
from .views import DisplayItemsViews
from django.contrib import admin
urlpatterns = [
path(r'^admin/', admin.site.urls),
path(r'^zzz/', DisplayItemsViews.as_view()),
]
views.py
from rest_framework.response import Response
from rest_framework import status
from .serializers import DisplayItemsSerializer
from .models import DisplayItems
class DisplayItemsViews(APIView):
def get(self, request):
displayItems = DisplayItems.create("YES!", "There's yoga today", "At 2:00 pm Eastern Time")
serializer = DisplayItemsSerializer(displayItems)
return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)
我正在尝试 运行 的 url 是 http://127.0.0.1:8000/zzz/
我已经阅读了几乎所有相关的 Whosebug 帖子,但似乎无法理解我遗漏了什么。
三件事:
1 - 您是否在 settings.py
的 INSTALLED_APPS
中安装了 rest_framework
?
2 - urls.py
中的 path()
不应包含 r'^
部分,这意味着正确的路径是 path('admin/', admin.site.urls)
和 path('zzz/', DisplayItemsViews.as_view())
。这是 Django 建议使用 url()
而不是 path()
3 - 我假设您已经在 views.py
中导入了 APIView
,如果没有,您需要 from rest_framework.views import APIView
编辑:我的工作本地版本。
views.py
from rest_framework.response import Response
from rest_framework import status
from rest_framework.views import APIView
from .serializers import DisplayItemsSerializer
from .models import DisplayItems
class DisplayItemsViews(APIView):
def get(self, request):
displayItems = DisplayItems.create("YES!", "There's yoga today", "At 2:00 pm Eastern Time")
serializer = DisplayItemsSerializer(displayItems)
return Response({"status": "success", "data": serializer.data}, status=status.HTTP_200_OK)
settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'base',
'rest_framework'
]
urls.py
from django.contrib import admin
from django.urls import path
from base.views import DisplayItemsViews
urlpatterns = [
path('admin/', admin.site.urls),
path('zzz/', DisplayItemsViews.as_view())
]
models.py
class DisplayItems(models.Model):
yesNo = models.CharField(max_length=10)
yogaMessage = models.CharField(max_length=50)
yogaTimeMessage = models.CharField(max_length=100)
@classmethod
def create(cls, yesNo, yogaMessage, yogaTimeMessage):
displayItems = cls(yesNo=yesNo, yogaMessage=yogaMessage, yogaTimeMessage=yogaTimeMessage)
return displayItems
serializers.py
from rest_framework import serializers
from .models import DisplayItems
class DisplayItemsSerializer(serializers.ModelSerializer):
yesNo = serializers.CharField(max_length=10)
yogaMessage = serializers.CharField(max_length=50)
yogaTimeMessage = serializers.CharField(max_length=100)
class Meta:
model = DisplayItems
fields = ('__all__')
结果在 localhost:8080/zzz