Django API представления 404 не найдено
У меня возникают проблемы. Я могу получить доступ к http://127.0.0.1:8000/api/. Но это возвращает 404 не найдено: http://127.0.0.1:8000/api/projects
Я просмотрел коды и не смог найти никаких ошибок. терминал также показывает следующее при запуске сервера: Not Found: /api/projects/ В чем может быть проблема?
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.getRoutes),
path('projects/', views.getProjects),
path('project/<str:pk>/', views.getProjects),
]
views.py
from rest_framework.decorators import api_view, permission_classes
from rest_framework.permissions import IsAuthenticated, IsAdminUser
from rest_framework.response import Response
from .serializers import ProjectSerializer
from projects.models import Project
@api_view(['GET'])
def getRoutes(request):
routes = [
{'GET': '/api/projects'},
{'GET': '/api/projects/id'},
{'POST': '/api/projects/id/vote'},
{'POST': '/api/users/token'},
{'POST': '/api/users/token/refresh'},
]
return Response(routes)
@api_view(['GET'])
def getProjects(request):
projects = Project.objects.all()
serializer = ProjectSerializer(projects, many=True)
return Response(serializer.data)
Страница 404 ошибки показывает следующее:
Using the URLconf defined in djangoProject1.urls, Django tried these URL patterns, in this order:
admin/
projects/
login/ [name='login']
logout/ [name='logout']
register/ [name='register']
[name='profiles']
profile/<str:pk> [name='user-profile']
account/ [name='account']
edit-account/ [name='edit-account']
create-skill/ [name='create-skill']
update-skill/<str:pk>/ [name='update-skill']
delete-skill/<str:pk>/ [name='delete-skill']
inbox/ [name='inbox']
message/<str:pk>/ [name='message']
create-message/<str:pk>/ [name='create-message']
api
api projects/
api project/<str:pk>/
reset_password/ [name='reset_password']
reset_password_sent/ [name='password_reset_done']
reset/<uidb64>/<token>/ [name='password_reset_confirm']
reset_password_complete/ [name='password_reset_complete']
^images/(?P<path>.*)$
^static/(?P<path>.*)$
The current path, api/projects/, didn’t match any of these.
Нашел ответ на свои собственные проблемы. Мне не хватало / в основной папке проекта url.py
Вы пропустили косой удар: http://127.0.0.1:8000/api/projects/
Чтобы предотвратить эту проблему в следующий раз, добавьте APPEND_SLASH = True
в свои settings.py