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