Получить запрос в файле 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])