Я возлюсь с бэкэндом по обучению API Django (Django 2.1), и у меня возникают проблемы с извлечением информации из профиля через Почтальон.Я предполагаю, что я не правильно указываю свой URL в своем urls.py.
Вот мой проект urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/', include('conduit.apps.authentication.urls'), name='authentication'),
path('api/v1/', include('conduit.apps.profiles.urls'), name='profiles')
]
Вот мой profiles.urls.py:
from .views import ProfileRetrieveAPIView
urlpatterns = [
path('profiles/<username:username>/', ProfileRetrieveAPIView.as_view())
]
Я думаю, что моя проблема связана с тем, какЯ реализую / до конца моего пути.Мой единственный другой соответствующий опыт работы с этим механизмом был в предыдущих проектах, где я использовал что-то подобное для уникальной маршрутизации URL-адреса в блоге (что я успешно сделал):
".../<slug:slug>/"
Теперь вот мой соответствующийПредставление на основе класса для указанного выше URL:
class ProfileRetrieveAPIView(RetrieveAPIView):
permission_classes = (AllowAny,)
renderer_classes = (ProfileJSONRenderer,)
serializer_class = ProfileSerializer
def retrieve(self, request, username, *args, **kwargs):
try:
profile = Profile.objects.select_related('user').get(
user__username=username
)
except Profile.DoesNotExist:
raise ProfileDoesNotExist
serializer = self.serializer_class(profile)
return Response(serializer.data, status=status.HTTP_200_OK)
Вы можете видеть в моей функции получения, я работаю с атрибутом имени пользователя.Это то, что я думаю, что я пытаюсь соответствовать моему пути URL.Я предполагаю, что я, вероятно, не понимаю, как правильно связать переменную пути URL (эта терминология звучит неправильно) с моим представлением.Спасибо!
Также - учебник, которому я следую, заставляет меня сделать запрос GET в почтальоне.Коллекция, которую я скачал как часть учебника, по умолчанию имеет следующий URL:
http://127.0.0.1:8000/api/v1/profiles/celeb_harry
Откуда берется префикс «celeb_» перед моим именем пользователя («harry»).Я не вижу этого ни в одном из моих файлов .py (средства визуализации, сериализаторы, представления, URL-адреса и т. Д.)