djangoå¦ä½è¿åjson(djangoè¿åjson)
导读ï¼æ¬ç¯æç« é¦å¸CTOç¬è®°æ¥ç»å¤§å®¶ä»ç»æå ³djangoå¦ä½è¿åjsonçç¸å ³å 容ï¼å¸æ对大家ææ帮å©ï¼ä¸èµ·æ¥ççå§ãå¨Djangoä¸å°QuerySet转æ¢ä¸ºJSON1ãå¨ç±»ä¸èªå®ä¹è£ æ¢
2ã[使ç¨Djangoçå ç½®åºååç¨åºå°QuerySet转æ¢ä¸ºJSON]
3ã使ç¨values()
å¦ä½ç¨djangoè¿åä¸ä¸ªé¡µé¢ï¼å¹¶ä¼ éjsonæ°æ®ï¼èä¸æ¯ä» ä» è¿åjsonæ°æ®å¯ä»¥çå
å¼å ¥render
from?序列o序django.shortcuts?import?render
è¿åæ¶å°type=models.CharField(max_length=,blank=False)
catname=models.CharField(max_length=,blank=False)
def__unicode__(self):
return'%s'%(self.catname)
deftoJSON(self):
importjson
returnjson.dumps(dict([(attr,getattr(self,attr))forattrin[f.nameforfinself._meta.fields]]))
ç¶åç¨djangoæ¥åºæ°æ®ï¼å¹¶è½¬æ¢æjsonï¼ä»£ç å¦ä¸ï¼
row=models.Category.objects.get(autoid=)
printrow.toJSON()
å¦ä½å¨Djangoä¸æ¥æ¶JSONæ ¼å¼çæ°æ®
ä¸é¢éè¿ä¸ä¸ªä¾å说æå¦ä½ä»HTMLä¸åéjsonï¼å¹¶å¨Djangoä¸æ¥æ¶jsonæ°æ®ï¼å¨HTMLä¸ï¼å¯ä»¥éè¿JSON对象å°æ°æ®ä»¥Jsonæ ¼å¼åéå°æå¡å¨ï¼å设å¨play.htmlä¸æ以ä¸å 容è¦åéå°æå¡å¨ï¼
ç¨æ·åusername
å¯ç password
ä¸ä¸ªæ°ç»ï¼å ¶ä¸æ¯ä¸ªå ç´ å å«:游æç¼å·game_idåå¾ålevel
é£ä¹,ï¼å¯ä»¥ä½¿ç¨å¦ä¸JavaScript(JQuery)代ç ï¼
script?type="text/javascript"
$(function()?{
$('#upload').click(function()?{
var?json_obj?=?{
username:?$('#username').val(),
password:?$('#password').val(),
datas:?[
{
game_id:?$('#datas1').val(),
level:?$('#level1').val()
},
{
game_id:?$('#datas2').val(),
level:?$('#level2').val()
}
]};//JSON对象?
var?json_str?=?JSON.stringify(json_obj);//å°JSON对象转åæJSONæ ¼å¼çå符串
$.post("/datasave",?json_str,?callback,?"json");
})
function?callback(json){
$('#response').html('code:'+json['status']['code']?+?"\tmessage:"?+?json['status']['message']);
}
})
/script
å¨ä¸é¢ç代ç ä¸ï¼æ°æ®å°åéå°/datasaveï¼å¨Djangoä¸ä½¿ç¨request.raw_post_dataï¼å¹¶åå©simplejsonæ¥å°å ¶è½¬æ¢ä¸ºåå ¸dictæ°æ®ç±»åï¼ä»£ç å¦ä¸ï¼
def?datasave(request):
dict?=?{ }
info?=?'Data?log?save?success'
try:
if?request.method?==?'POST':
//request.raw_post_dataä»å®¢æ·ç«¯åéè¿æ¥çåå§æ°æ®,éè¿simplejsonçloadsæ¹æ³å°å ¶è½¬æ¢ä¸ºåå ¸æ°æ®ç±»åreq
req?=?simplejson.loads(request.raw_post_data)
username?=?req['username']
password?=?req['password']
datas?=?req['datas']
game_id1?=?datas[0]['game_id']
except:import?sys
info?=?"%s?||?%s"?%?(sys.exc_info()[0],?sys.exc_info()[1])
dict['message']=info
dict['create_at']=str(ctime())
json=simplejson.dumps(dict)
return?HttpResponse(json)
ç»è¯ï¼ä»¥ä¸å°±æ¯é¦å¸CTOç¬è®°ä¸ºå¤§å®¶æ´ççå ³äºdjangoå¦ä½è¿åjsonçç¸å ³å 容解çæ±æ»äºï¼å¸æ对æ¨ææ帮å©ï¼å¦æ解å³äºæ¨çé®é¢æ¬¢è¿å享ç»æ´å¤å ³æ³¨æ¤é®é¢çæååï½
Django REST Framework (DRF)笔记
Django REST Framework (DRF)是一个强大的工具包,使得非为REST API设计的化源Django能够快速开发出规范的API,增强其应用潜力并减少被淘汰风险。列化通过本文,代码我们将逐步了解如何在Django工程中集成DRF,序列o序啃源码包括安装、化源漫画源码免费下载APP注册、列化模型操作、代码序列化、序列o序视图和路由设置等步骤。化源
首先,列化安装DRF,代码确保已安装Django后通过pip进行安装。序列o序影视漫画小说源码接下来,化源创建一个名为'APIdemo'的列化工程,然后在其中新建一个名为'students'的APP,并将其与DRF注册到Django中。jvm解释器源码在'models.py'中定义模型,迁移至sqlite数据库并生成表单。
在'admin.py'中配置Admin后台,用于数据管理。如何复制后端源码创建并登录Admin后台,添加学生数据。然后编写'serializers.py'文件,定义序列化器以处理数据转换。在'views.py'中编写视图代码,调用序列化器并处理请求。
在'urls.py'中配置URL路由,访问DRF提供的API接口,验证功能正常。通过添加学生ID查看详细信息,更新和删除学生数据,以及添加新的学生。尽管DRF的使用看似简单,但理解其内部原理尤为重要,后续会深入剖析视图中序列化和数据处理的部分。
2024-11-13 09:30
2024-11-13 09:20
2024-11-13 08:41
2024-11-13 07:59
2024-11-13 07:29