Метод не разрешен в свежем проекте django-ninja-extra
Я не могу сделать пост запрос в моем проекте, сейчас я создал свежий проект, потому что я думал, что это проблема конфигурации. Но проблема сохраняется. Проблема в том, что когда я пытаюсь сделать пост-запрос, он всегда выдает мне 405 статус назад.
settings.py:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'backend.apps.department',
'ninja_extra'
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
api.py:
from ninja_extra import NinjaExtraAPI
api = NinjaExtraAPI()
api.auto_discover_controllers()
department/api.py:
from ninja_extra import api_controller, route
from django.shortcuts import get_object_or_404
from ninja import Schema
from datetime import datetime
from .models import department
from typing import List
class DepartmentIn(Schema):
name: str
last_modified: datetime
user_id: int
class DepartmentOut(Schema):
id: int
name: str
last_modified: datetime
@api_controller('department/')
class DepartmentController:
@route.get("all/", response=List[DepartmentOut])
def get_departments(self):
department_list = department.objects.all()
return department_list
@route.get("{department_id}/", response=DepartmentOut)
def get_department(self, department_id: int):
record = get_object_or_404(department, id=department_id)
return record
@route.post("create/")
def create_department(self, payload: DepartmentIn):
record = department.objects.create(**payload.dict())
return {"id": record.id}
models.py:
from django.db import models
from django.conf import settings
class department(models.Model):
name = models.CharField(max_length=50)
last_modified = models.DateTimeField(auto_now=True, auto_now_add=False)
user_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
Проблема, которую я получаю:
Тело ответа
Метод не разрешен
Заголовки ответа
разрешить: GET content-length: 18 content-type: text/html; charset=utf-8 cross-origin-opener-policy: same-origin дата: Wed,11 Dec 2024 11:22:20 GMT referrer-policy: same-origin сервер: WSGIServer/0.2 CPython/3.12.5 x-content-type-options: nosniff x-frame-options: DENY
Итак, я нашел ошибку в моем коде, я все еще не понимаю, почему это так, или почему это работает, но вот мое решение проблемы:
Просто переместите route.post перед route.get