过去几个月我一直在研究Django-rest-framework。我不太明白如何使用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请求数据并进行一些验证,就像评论属于正确的主题一样。
我找不到任何完成它的例子。所以我通过使用类似的东西在Flask中找到了它的可能性。
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-framework中有类似内容的替代方法。
我很新,所以请用简单的语言解释。我不需要任何代码,只是搜索我如何使用json请求到达服务器。
我多次阅读文档是不费吹灰之力的
免责声明:我还要完成django-rest-framework code
答案 0 :(得分:1)
此作业由序列化程序类处理:
我们需要开始使用Web API的第一件事就是提供一个 将代码段实例序列化和反序列化的方法 像json这样的表示。我们可以通过声明序列化器来完成此操作 这与Django的形式非常相似。
序列化程序类与Django Form类非常相似,并且 包括各种字段上的类似验证标志,例如 required,max_length和default。
如果您的序列化程序继承了serializer.ModelSerializer
,那么它会使用您的模型来验证您的数据,例如继承自form.ModelForm
的表单类。是的,你不会重新编写任何代码来验证你的数据,这看起来很神奇。 ( DRY概念)但是,当然,您可以在序列化程序类中定义和覆盖模型验证程序。
我建议你重新阅读Django-Rest-Framework,特别是Serializer部分。它解释了DRF为用例提供的所有序列化程序类。