【发布时间】:2019-04-27 14:36:30
【问题描述】:
我正在处理后端 Django API 教程 (Django 2.1),并且无法通过 Postman 提取“个人资料”信息。我的假设是我在 urls.py 中没有正确地说明我的 url。
这是我的项目 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 请求。我作为教程的一部分下载的集合默认填充了以下网址:
http://127.0.0.1:8000/api/v1/profiles/celeb_harry
我的用户名('harry')前面的'celeb_'来自哪里。我在我的任何 .py 文件(渲染器、序列化器、视图、url 等)中都没有看到这一点
【问题讨论】:
标签: django url django-rest-framework