在视图中使用JSON数据

2024-09-28 22:21:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在DjangoREST框架上工作了几个月。我不太明白json请求是如何实现的用过了。可以吗你帮帮我吧,我被困在这里好几个月了。你知道吗

我在另一个网站上有一个第三方html代码片段,假设它发送了这个json数据

[{"idcomment":1,"isFlagged":false,"isDeleted":false,"isApproved":true,"createdAt":"2015-11-22T12:39:33Z","numReports":0,"isEdited":false,"message":"xcvvzvc","isSpam":false,"isHighlighted":false,"ip_address":"","is_public":true,"tree_path":"0000000001","tone":"Neutral","forum":1,"parent":null,"topic":1,"last_child":null,"user":1}][{"idcomment":1,"isFlagged":false,"isDeleted":false,"isApproved":true,"createdAt":"2015-11-22T12:39:33Z","numReports":0,"isEdited":false,"message":"xcvvzvc","isSpam":false,"isHighlighted":false,"ip_address":"","is_public":true,"tree_path":"0000000001","tone":"Neutral","forum":1,"parent":null,"topic":1,"last_child":null,"user":1}]

我的问题是:如何使用这个json请求数据并进行一些验证,比如注释是否属于正确的主题。你知道吗

我找不到任何这样做的例子。所以我想用这种方法在烧瓶里是可能的。你知道吗

mod.route("/create/", methods=["POST"])
def create():
    json = getJson(request)
    check_required(json, ['date', 'thread', 'message', 'user', 'forum'])
    uid = id_by_email(json['user'])
    fid = id_by_sname(json['forum'])
    if uid < 0 or fid < 0:
        return send_resp(json)
    if 'parent' in json:
        parent = json['parent']
    else:
        parent = None
        json['parent'] = None
    if 'isApproved' in json:
        approved = json['isApproved']
    else:
        approved = 0
        json['isApproved'] = 0
    if 'isHighlighted' in json:
        highlighted = json['isHighlighted']
    else:
        highlighted = 0
        json['isHighlighted'] = 0
    if 'isEdited' in json:
        edited = json['isEdited']
    else:
        edited = 0
        json['isEdited'] = 0
    if 'isSpam' in json:
        spam = json['isSpam']
    else:
        spam = 0
        json['isSpam'] = 0
    if 'isDeleted' in json:
        deleted = json['isDeleted']
    else:
        deleted = 0
        json['isDeleted'] = 0
    db.insert("""INSERT INTO posts (date,thread_id,message,user_id,forum_id,parent,approved,highlighted,edited,spam,deleted) 
                values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)""", (
        json['date'], json['thread'], json['message'], uid, fid, parent, approved, highlighted, edited, spam, deleted))

    pid = db.query("SELECT LAST_INSERT_ID() as id")[0]['id']
    json['id'] = pid
    return send_resp(json)

在django rest框架中,这样的东西的替代方案是什么。你知道吗

我是新来的,请用简单的语言解释。我不需要任何代码,只需要搜索如何使用到达服务器的json请求。你知道吗

这是一个不用动脑筋的我读了几次文件

免责声明:我还将通过django-rest-framework code


Tags: inidjsonfalsemessageifforumelse
1条回答
网友
1楼 · 发布于 2024-09-28 22:21:23

此作业由序列化程序类处理:

The first thing we need to get started on our Web API is to provide a way of serializing and deserializing the snippet instances into representations such as json. We can do this by declaring serializers that work very similar to Django's forms.

A serializer class is very similar to a Django Form class, and includes similar validation flags on the various fields, such as required, max_length and default.

如果您的序列化程序继承了serializer.ModelSerializer,那么它将使用您的模型验证您的数据,比如从form.ModelForm继承的表单类。是的,你不需要重新编写任何代码来验证你的数据,这看起来很神奇。(DRY concept)但是,当然,您可以在序列化程序类中定义和重写模型验证器。你知道吗

我建议您重新阅读Django Rest框架,特别是Serializer部分。它解释了DRF为用例提供的所有序列化程序类。你知道吗

相关问题 更多 >