我有一个使用 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/