【问题标题】:Django Rest Framework Send Data to View Without SerializerDjango Rest 框架在没有序列化器的情况下将数据发送到视图
【发布时间】:2019-03-30 18:14:41
【问题描述】:

我的应用程序中有一个Magic 模型。我需要附加到此模型的用户访问他们的电子邮件地址以验证某些内容,然后才能访问信息。这应该通过 RESTful API 进行。问题是,用户不一定要登录才能访问此功能(对于我无法控制的设计决策)。

我已经实现了生成必要信息和发送电子邮件(仅当此类电子邮件已注册)、访问电子邮件信息后的身份验证等逻辑。

我的问题:如何实现在正文(或 url)中获取用户电子邮件的视图?

方法一:创建一个url/magic_api/v1/tdbverification/(?P<email>[\w.@]+)/并提取邮箱地址并发送邮件。

1 的问题:我似乎无法提取电子邮件并且我需要在没有序列化程序的情况下返回一个 json 对象

方法2:创建一个带有body的视图:{"email": "<email@here.com>"}

问题 2:这需要没有模型的序列化程序(因为此视图仅用于发送电子邮件,它不会更改模型对象)。我尝试使用 serializers.Serializer 类,但不知道如何合并电子邮件发送逻辑。

对此的任何帮助将不胜感激。

【问题讨论】:

  • 必须大声说出来,不要在网址中包含敏感的用户数据(甚至是电子邮件)。从来没有,从来没有。不良行为者更容易拦截这些数据。

标签: django email post django-rest-framework


【解决方案1】:

为什么你总是需要一个序列化器!您可以在不使用序列化程序的情况下编写视图。示例

from rest_framework.views import APIView

class Test(APIView):
    def post(self, request):
        email = request.data['email']
        ...  your logic ...
        return Response(...)

【讨论】:

  • from rest_framework_jwt.views import APIViewfrom rest_framework.generics import APIView?
  • rest framework generic 不包含 APIView。从 rest_framework.views 导入 APIView
  • 我认为这不会在 API 根目录中产生良好的视图,您必须自己进行验证。包含一个基本的序列化器并不难,并且可以让所有 DRF 功能正常工作。
  • 这里是一个使用序列化器验证数据然后覆盖保存方法发送邮件的示例:django-rest-framework.org/api-guide/serializers/…
猜你喜欢
  • 2016-02-17
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 2015-06-29
  • 2016-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多