Python Django应用程序SSL套接字连接到固件

Python Django应用程序SSL套接字连接到固件,python,django,mongodb,sockets,ssl,Python,Django,Mongodb,Sockets,Ssl,我有一个使用Django rest框架创建的Django应用程序。以下是我的安装程序正在使用的配置: Django 1.9 作为后端的mongoDB 古尼科恩 nginx 现在我已经创建了一个API,用于在DB中输入数据并使用REST检索数据。我已经通过邮递员测试过了,效果很好。我们有一个正在使用这些API的固件,该团队希望使用SSL套接字连接而不是REST API 我是SSL套接字连接方面的新手,在互联网上找不到任何可以帮助我的东西。我知道可以在Python中创建套接字,但我不知道如何在Dja

我有一个使用Django rest框架创建的Django应用程序。以下是我的安装程序正在使用的配置:

Django 1.9 作为后端的mongoDB 古尼科恩 nginx

现在我已经创建了一个API,用于在DB中输入数据并使用REST检索数据。我已经通过邮递员测试过了,效果很好。我们有一个正在使用这些API的固件,该团队希望使用SSL套接字连接而不是REST API

我是SSL套接字连接方面的新手,在互联网上找不到任何可以帮助我的东西。我知道可以在Python中创建套接字,但我不知道如何在Django应用程序中使用它在mongoDB中读/写数据

任何指导都会很有帮助

读者:我知道你可能想结束这个问题,但请就如何获得这方面的指导发表评论,因为这是提出问题的最大门户

编辑1:我正在添加serializer.py API的代码

from rest_framework import serializers

class SaveUserLogs(serializers.Serializer):
    token = serializers.CharField(label=_("Token"))
    device_ip = serializers.CharField(label=_('Device IP'))
    device_name = serializers.CharField(label=_('Device Name'))
    device_os = serializers.CharField(label=_('Device OS'))
    device_macid = serializers.CharField(label=_('Device MAC ID'))
    dest_port = serializers.CharField(label=_('Device Port'))
    conn_type = serializers.CharField(label=_('Connection Type'))
    date = serializers.CharField(label=_('modified date'))

    def validate(self, attrs):
        device_macid = attrs.get('device_macid')
        token = attrs.get('token')
        if device_macid:
            tokendetails = validate_token(token)
            if not tokendetails:
                msg = _('Invalid token.')
                raise serializers.ValidationError(msg)
            else:

                userdetails = tokendetails.user
                if userdetails.check_mac_id(device_macid):
                    all_logs = UserLog.objects.all().order_by("-id")
                    log_id = 1

                    if all_logs:
                        getid = all_logs[0].id
                        log_id = getid + 1

                    new_log = UserLog(
                        id=log_id,
                        device_ip=attrs.get('device_ip'),
                        device_name=attrs.get('device_name'),
                        device_os=attrs.get('device_os'),
                        device_macid=attrs.get('device_macid').upper(),
                        dest_port=attrs.get('dest_port'),
                        conn_type=attrs.get('conn_type'),
                    )
                    new_log.save()

                    print("saving log", log_id)
                else:
                    msg = _('Invalid MAC ID')
                    raise serializers.ValidationError(msg)
        else:
            msg = _('Must include "MAC ID".')
            raise serializers.ValidationError(msg)

        attrs['mac_id'] = userdetails.mac_id
        return attrs
看起来您需要python提供的库。但是不推荐使用它,因为你需要处理很多低级的网络工作,你的程序会变得复杂

相反,您应该保留RESTAPI并运行您的。然后,您可以在固件上编写代码,使用https从服务器发送和接收数据


如果出于某种原因您不想使用https,那么您应该使用library来编写您的服务器。

我必须连接到固件,因此必须使用SSL SocketI必须连接到固件,因此必须根据要求使用SSL Socket。这是用于将数据发送到固件[。此链接应该让您开始使用套接字编程。[这解释了如何从python脚本访问django模型。我们需要一些基于推的东西,因为HTTPS是基于拉的。