Когда я пытаюсь получить доступ http://localhost:8000/api/articles/, он работает нормально.
Когда я пытаюсь получить доступ к http://localhost:8000/api/articles/1, он работает нормально.
Когда я пытаюсь получить доступhttp://localhost:8000/api/articles/create Джанго считает, что я пытаюсь выполнить запрос GET ('get': 'retrieve'
).Что я делаю не так?
ошибки invalid literal for int() with base 10: 'create'
urls.py
urlpatterns = [
path('', ArticleViewSet.as_view({'get': 'list'}), name='list'),
path('<pk>/', ArticleViewSet.as_view({'get': 'retrieve'}), name='detail'),
path('create/', ArticleViewSet.as_view({'post': 'create'}) ,name='create'),
]
просмотров.py
class ArticleViewSet(ViewSet):
queryset = Article.objects.all()
def list(self, request):
articles = query_filter(request, ArticleViewSet.queryset)
serializer = ArticleSerializer(articles, many=True)
articles = formatter(serializer.data)
return Response(articles)
def retrieve(self, request, pk=None):
article = get_object_or_404(ArticleViewSet.queryset, pk=pk)
serializer = ArticleSerializer(article, many=False)
article = formatter([serializer.data])
return Response(article)
def create(self, request):
articles = ArticleViewSet.queryset
articles.create(title=request.data['title'], body=request.data['body'])
article = articles.last()
serializer = ArticleSerializer(article, many=False)
article = formatter([serializer.data])
return Response(article)
Также, когда я переключаю позиции retrieve
и create
в шаблонах URL, показанных ниже, я получаю эту ошибку "detail": "Method \"GET\" not allowed."
.
urlpatterns = [
path('', ArticleViewSet.as_view({'get': 'list'}), name='list'),
path('create/', ArticleViewSet.as_view({'post': 'create'}), name='create'),
path('<pk>/', ArticleViewSet.as_view({'get': 'retrieve'}), name='detail'),
]