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

标签 python django mongodb sockets ssl

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

Django 1.9 mongoDB 作为后端 unicorn nginx

现在我已经创建了一个 API 来在数据库中输入数据并使用 REST 检索它。我已经通过 postman 对其进行了测试,并且工作正常。我们有一个使用这些 API 的固件,该团队希望使用 SSL 套接字连接而不是 REST API。

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

任何指导都会非常有帮助。

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

编辑 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

最佳答案

看起来你需要 socket python 提供的库。但是不推荐使用它,因为您将不得不处理很多低级网络的东西,并且您的程序会变得复杂。

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

如果出于某种原因你不想使用 https 那么你应该使用 requests编写服务器的库。

关于python - Django 应用程序 SSL 套接字连接到固件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49852738/

相关文章:

python - 如何正确进行双 SHA256 哈希?

python - django.db.utils.OperationalError : 1005, 'Can' t创建表 `xyz` .`#sql-600_237`(错误号:150 "Foreign key constraint is incorrectly formed")

python - 如何从 webapp2 中的 cookies/headers/session 中决定语言?

java - 将 JSON 与 MongoDB 一起使用?

Python、Flask 客户端ip地址

python - 如何正确复制嵌套的字典对象?

django - 自定义管理器在现场过滤对象但不在管理中?

java - 在 MongoDB 中的对象内插入数组

mongodb - 如何为 CDH4 安装 mongo-hadoop?

python - 错误 1045 (28000) : Access denied