当前位置: 首页> 财经> 股票 > 多用户商城系统_怎样办自己的网站_黑帽seo什么意思_海南百度竞价排名

多用户商城系统_怎样办自己的网站_黑帽seo什么意思_海南百度竞价排名

时间:2025/7/10 2:31:54来源:https://blog.csdn.net/qq_35661171/article/details/144292905 浏览次数:0次
多用户商城系统_怎样办自己的网站_黑帽seo什么意思_海南百度竞价排名
from django.db import models
class ProtocolConfModel(models.Model):"""http,ftp,telnet,smpt,pop3配置"""id = models.AutoField(auto_created=True, primary_key=True, serialize=False, help_text="ID")tplid = models.IntegerField(blank=True, null=True, help_text="模板ID")config_content = models.CharField(max_length=2400, blank=True, help_text='存储http,ftp,telnet,smpt,pop3配置页面填写的所有内容')protocol = models.SmallIntegerField(blank=True, help_text="协议, 存储数字和中文的对应关系: 1-http 2-ftp 3-telnet 4-smtp 5-pop3 6-dns")config_content = models.JSONField()  # 使用 JSONField 来存储 JSON 格式数据

核心代码就是上面config_content =models.JSONField()这行代码;

使用 JSONField 来存储和操作 JSON 数据。Django 会自动将数据转换成正确的格式,包括双引号。

  1. 确保插入的数据是字典格式
    当你使用 ProtocolConfModel.objects.create() 来插入数据时,你可以直接传递 Python 字典(如 http_conf),Django 会自动处理字典格式并将其转换为正确的 JSON 格式,保留双引号。

    示例代码:

    http_conf = {"protocol": [],"headerfilter": "","netfilter": "","urlfilter": "","javafilter": "0","scriptfilter": "0","activexfilter": "0"
    }# 使用 Django ORM 保存数据
    ProtocolConfModel.objects.create(tplid=tpl.id,protocol=i + 1,config_content=http_conf  # 直接传递字典,Django 会自动处理为 JSON 格式
    )
    
  2. MySQL 存储
    这样,Django 会将 http_conf 字典转换为 JSON 格式,并插入到 MySQL 中。MySQL 会将其存储为 JSON 数据类型,自动保留双引号。例如:

    {"protocol": [],"headerfilter": "","netfilter": "","urlfilter": "","javafilter": "0","scriptfilter": "0","activexfilter": "0"
    }

下面是保存成功mysql数据库config_content列的内容

可以很清楚看到双引号得到保留, 这样在读取的时候也很方便

import time
from rest_framework import status
from rest_framework.response import Response
from rest_framework.generics import GenericAPIView, ListAPIView
from contentfilter.content_template.models import ProtocolConfModel
from contentfilter.content_template.serializers import ContentProtocolConfSerializer
from common.constants import response_data, write_utm_logclass GetProtoConf(ListAPIView):def get(self, request, *args, **kwargs):""" 获取协议配置信息:param int protocol: 协议类型  数字和中文的对应关系: http-1 ftp-2 telnet-3 smtp-4 pop3-5 比如http配置则protocol传数字1:param int tplid: 模板id:return:"""proto = self.request.query_params.get("protocol", 1)tplid = self.request.query_params.get("tplid", 1)if proto.isdigit():proto = int(proto)else:proto = 1protocol_conf = ProtocolConfModel.objects.filter(protocol=proto, tplid=tplid)if protocol_conf.exists():for item in protocol_conf:config_content = item.config_contentconfig_content.update({"id": item.id})datas = {"code": 200,"timestamp": int(time.time()),"result":  config_content,"msg": "返回数据成功"}else:datas = {"code": 400,"timestamp": int(time.time()),"result": [],"msg": "前端传的协议值或模板值在数据库不存在"}return Response(datas, status=status.HTTP_200_OK)

使用postman调用查询接口

 可以很清楚看到返回的正好也是上面存储的字典类型的字符串, 也是json格式的

还有另外一种方法是不在model里面设置 config_content = models.JSONField() , 使用json.loads() 去加载解析json,. 但是作者在使用这种方式时发现, 添加时config_content内容中所有引号明明给的是双引号, 但是插入到数据库却变成了单引号, 查询达到的答案如下:

然后继续追问, 需要将http_conf键值对是双引号保存到mysql列中给出的答案就是上面提到的 

今天的文章就先写到这, 更多实战开发经验和技巧欢迎关注

关键字:多用户商城系统_怎样办自己的网站_黑帽seo什么意思_海南百度竞价排名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: