Mar*_*rek 11 django django-rest-framework
我试图实现这样的端点/api/messages/<str:email>/
将返回给定电子邮件的消息列表。
所以在我的 ViewSet 中我创建了一个带有@action
装饰器的函数
@action(
detail=False,
methods=["get"],
name="Get email messages",
url_path="<str:email>",
url_name="Email's messages"
)
def email_messages(self, request, email=None):
return Response({"aaa": email}, status=200)
Run Code Online (Sandbox Code Playgroud)
但 django 似乎无法解决,例如。这个url:(/api/messages/aaa/
仅用于测试)并返回404。
即使我更改url_path
为email
它也会返回 404 /api/messages/email/
。url_path
仅当我从参数中删除 kwarg 时它才有效。然后就可以在 下访问了/api/messages/email_messages
。
GET
我怎样才能实现工作/api/messages/<str:email/
以便将电子邮件传递给该函数?
JPG*_*JPG 19
看来 DRF 不接受Django 路径表达式,但接受正则表达式。所以,你需要使用url_path=r'(?P<email>\w+)'
而不是url_path=<str:email>
另外,此路径将覆盖默认的详细视图,即/api/messages/<PK>/
API。因此,我建议在此电子邮件端点使用一些前缀
@action(
detail=False,
methods=["get"],
name="Get email messages",
url_path=r'some-prefix/(?P<email>\w+)',
url_name="Email's messages"
)
def email_messages(self, request, email=None):
return Response({"aaa": email}, status=200)
Run Code Online (Sandbox Code Playgroud)
现在,您的 API 端点将是,/api/messages/some-prefix/foo-bar/
归档时间: |
|
查看次数: |
12655 次 |
最近记录: |