1. 如何将model对象转化成一个dict,这在restful api的设计上会有用。

答案:使用django.forms.models的model_to_dict方法,demo如下:

from django.forms.models import model_to_dict as m2d
from django.contrib.auth.models import User
m = User.objects.all()[0]#model object
d = m2d(m)#dict

注意,model_to_dict会自动忽略editable属性为False的字段(包括auto_now_add属性为True的DatetimeField)

2. 如何让model在保存时只更新部分数据而不是全部数据?

有两种方法:

1) 基于queryset的update操作。

2) save(update_fields=[]) , 即通过save的update_field参数来制定只是update哪些字段,save默认update所有字段,包括editable为False的字段!

3. restful api设计时,如何在将错误信息(json格式)和错误码(比如:500)一起返回?

data  = simplejson.dumps({'code':1001,'message':'错误信息','description':'详细描述'})
return HttpResponse(data, content_type='application/json', status=500)

HttpResponse的完整__init__函数如下(参考这里):

HttpResponse.__init__(content='', content_type=None, status=200, reason = None)

推荐面向对象的设计。参考这里

4. django如何与mongodb集成?

在做cms时,选择mongodb是一个非常明智的选择。然后如何搭配django和mongodb呢?

方案1: 利用MongoEngine之类的orm-like layer, 提供与Django Model(ORM)非常类似的体验,可以快速上手。

    • 提供了和 Django 原生 ORM 几乎一样的一切,功能已经相当强大;
    • 用起来比 Django 原生 ORM 更简洁更优雅;
    • MongoEngine 和 Django “契合度”很高,Session,User 模块几乎可以直接平移过来,但MongoEngine 本身不依赖 Django,可以用在其他框架上;
    • 本身很轻巧,文档很丰富,所以文档提供不了的细节,可以通过直接读代码来解决。
    • 当然缺点也是很明显的,最不能习惯的就是 admin 没了……

方案2:通过django-nonrel实现,这个是GAE的django应用的默认实现方案。缺点据说如下(尚未验证):

    • mongodb类NoSQL天然没有join操作,所以在django-nonrel中使用mongodb时没有多表继承功能,只能从abstract类继承
    • 没有join的操作也意味着很多atomic的SQL查询需要转换成非atomic的nosql查询
    • 很多原ORM的特性在django-nonrel中使用会抛出NotImplemented的异常。

方案3:直接使用PyMongo,缺点是自己要写CRUD语句。

方案4:以上方案的组合,比如1+3。mongoEngine据说查询效率有点拖后腿(待验证), 这个短板可以使用PyMongo来弥补。

参考:http://www.cnblogs.com/holbrook/archive/2012/03/11/2390715.html, http://www.zhihu.com/question/19818326

django 技巧锦集的更多相关文章

  1. linux操作小技巧锦集

    0.常用Linux命令 查看端口被占用情况: 1.netstat -tunlp|grep 端口号 2.lsof -i:端口号 tar 压缩文件命令: -c:建立一个压缩文件的参数指令(create 的 ...

  2. C++ 编程技巧锦集(一)

    C++刷题精髓在STL编程,还有一些函数.下面我就总结一下本人在刷题过程中,每逢遇见总要百度的内容………………(大概率因为本人刷题太少了) 1. map map<string, int> ...

  3. Docker实用debug调试技巧锦集

    阅读约 20 分钟 『重用』容器名 但我们在编写/调试Dockerfile的时候我们经常会重复之前的command,比如这种docker run --name jstorm-zookeeper zoo ...

  4. iOS--碎片知识锦集

    知识锦集day01 1.UIView的两个方法: sizeThatFits和 sizeToFit 官方文档上说: - (CGSize)sizeThatFits:(CGSize)size;     // ...

  5. Android中的对话框AlertDialog使用技巧合集-转载

    Android中的对话框AlertDialog使用技巧合集     文章来自:http://blog.csdn.net/blue6626/article/details/6641105   今天我用自 ...

  6. CMD命令锦集

    虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一般Windows 的各种版本都与其兼容,用户可以在Wi ...

  7. ubuntu16.04安装cuda8.0试错锦集

    ubuntu16.04安装cuda8.0试错锦集 参考文献: [http://www.jianshu.com/p/35c7fde85968] [http://blog.csdn.net/sinat_1 ...

  8. C#笔试题面试题锦集(全)总20篇

    前些时候找过一次工作,收集了很多不错的笔试题目.共享一下:) C#笔试题面试题锦集(20) 微软应试题目 (2010-01-15 21:32) C#笔试题面试题锦集(19) 雅虎C#题目 (2010- ...

  9. C/C++中一些不太注意到的小知识点--[锦集]

    C/C++中一些不太注意到的小知识点--[锦集] C/C++小知识点--[锦集] "="和"<=" 的优先级 1.( (file_got_len = re ...

随机推荐

  1. win10系统点击关机按钮后无法关机的解决办法

    先吐槽下:我越发的发现我现在成了修电脑的了,我的职位是linux运维,现在干的活很蛋疼,公司只有我一个运维,修电脑.搞网络.抬服务器.弄监控,搭环境.搞自动化发布.弄虚拟化都我一个人哇.好了,打住. ...

  2. Windows Platform Predefined Macros

    https://msdn.microsoft.com/en-us/library/b0084kay.aspx

  3. WebGrid with filtering, paging and sorting 【转】

    WebGrid with filtering, paging and sorting by Jose M. Aguilar on April 24, 2012 in Web Development A ...

  4. RabbitMQ service is already present - only updating service parameters

    如果你安装RabbitMQ不是那么一番顺利..那么你有可能会重装多次.. So..问题来了..重装时你执行   rabbitmq-service install  的时候..有可能就会报这个错了.. ...

  5. safari 调用隐藏fileInput

    在safari上,用自定义按钮调用隐藏fileInput,注意点 1. event listener中,不要 return false2. 不要使用display:none,可使用 opacity:0 ...

  6. C# Emit动态代理生成一个实体对象

    /// <summary> /// 使用Emit动态代理收集实体信息 /// </summary> /// <typeparam name="T"&g ...

  7. 用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器

    如用svnsync 同步备份两台机器的svn .(就以linux服务器到windows服务器为例子) 要同步的项目名称:source_svn svn 版本库1 .4 以上 源目录:           ...

  8. R--基本统计分析方法(包及函数)

    摘要:目前经典的统计学分析方法主要有回归分析,Logistic回归,决策树,支持向量机,聚类分析,关联分析,主成分分析,对应分析,因子分析等,那么对于这些经典的分析方法在R中的使用主要有那些程序包及函 ...

  9. 网站为什么要做SEO

    网站为什么要做seo,不做seo可以吗?因为seo是获得流量比较稳定.长久的方式,也是自身品牌的最好的方式.我们做的网站必须有用户访问或者被用户知道才有价值和意义,而想被用户所了解的话,必须做网络营销 ...

  10. 字符编码详解及由来(UNICODE,UTF-8,GBK)

        一直对字符的各种编码方式懵懵懂懂,什么ANSI.UNICODE.UTF-8.GB2312.GBK.DBCS.UCS--是不是看的很晕,假如您细细的阅读本文你一定可以清晰的理解他们.Let's ...