Получить запрос в файле views.py с идентификатором

У меня есть модель Word. Мне нужно изменить метод get в классе WordView в файле views.py так, чтобы он обрабатывал: GET /words/{id} запрос. Пример ответа:

{
    "id": 1,
    "name": "to ask out",
    "translation": "Пригласить на свидание",
    "transcription": "tuː ɑːsk aʊt",
    "example": "John has asked Mary out several times.",
}

Мой код в методе get:

from django.views import View
from django.http import JsonResponse
from models import Word

class WordView(View):

    def get(self, request, id):     # Maybe there shouldn't be `id` argument

        item = Word.objects.get(id=id)
        items_data = [{
            'id': item.id,
            'word': item.word,
            'transcription': item.transcription,
            'translation': item.translation,
            'example': item.example,
        }]

        return JsonResponse(items_data[0])

Вопрос 1: как мне нужно изменить ulrs.py (для запроса /words/{id})

urlpatterns = [
    path('admin/', admin.site.urls),
    path('words/{id}', WordView.as_view()),
]

Вопрос 2: как мне нужно изменить метод get

В вашем urls.py вы должны добавить ваш url следующим образом ( добавление имени полезно для перенаправления из другого представления или из шаблонов) :

path('words/<int:id>/', WordView.as_view(), name='words'),

Теперь, чтобы получить ваш id в вашем методе get вы можете получить его из kwargs, переданных в url, следующим образом :

class WordView(View):

    def get(self, request, **kwargs):
        id = kwargs['id']
        item = Word.objects.get(id=id)
        items_data = [{
            'id': item.id,
            'word': item.word,
            'transcription': item.transcription,
            'translation': item.translation,
            'example': item.example,
        }]

        return JsonResponse(items_data[0])
Вернуться на верх