Python Tech

Django利用API实现AJAX操作

Django的缺点之一,就是它不支持AJAX。好吧,我知道这么一说又会有一群人反驳:Django有各种模块可以提供AJAX功能;写一个XML的view来实现AJAX;整合pyjams就什么功能都有了云云。嘛,都可以,我这也只是分享一个可行的方案,并不是唯一的。如果这个方案正好适合你的项目,那直接拿去用不是更省时间吗? 首先说一下现在项目的情况,前端工程师想用AJAX的方式(依赖于jQuery),通过POST/GET/PUT请求,提交JSON/XML/YAML格式的数据给后台数据库暴露出的一个API地址,以实现对后台数据的操作。如果在view里写一个函数来做比较麻烦,所以使用tastypie直接根据定义的model生成一个API。 Install&Begin 需要安装django-tastpie, python-digest, python-dateutil, mimeparse。最近因为某些原因国外的https访问经常会受到影响,所以附上下载链接。当然能用pip/easy_install之类的命令来安装最好,已经给出了模块名,这里不再重复写一次命令了。 还是和以前一样,先以最快的方式先把tastypie跑起来:

Continue Reading
Product

新浪微博的插件——轻博客

虽然比Tumblr晚了4年,比宽途/宽岛晚了半年,也比点点晚了几个月,但并不妨碍新浪打着“引领互联网潮流”的旗号,推出轻博客。不需要任何智慧就能猜到,这个产品必然依托于新浪微博。不过为了符合之前行文的习惯,还是稍微对这款产品的界面做一些介绍。 作为国内最早的互联网公司之一,Sina的技术积累自然是没得说,轻博客在界面和体验度上不逊色于国内任何一个主流Web产品,它有很好的用户引导,直接利用微博形成的用户习惯,首页几乎和新浪微博无异,所以就没必要截图了。 当然也有一些做得不够好的地方,默认的首页仍然是微博的内容,轻博客的更新则放在选项卡里,还有一些按钮的位置——比如编辑模板之后的确定——不怎么人性化,但至少这个产品没砸新浪的招牌,这是肯定的。 Philosophy 通常人们喜欢用“杂志”来类比轻博客,以此区分类比于书的博客,类比于报纸的微博。像书一样,一个Blog要能引起人们的注意,需要长时间的打理,不断的更新。报纸和微博则只需要一条爆炸性新闻就能吸引众人关注。那么杂志,或者说轻博客呢? 法国人最早创办了杂志,如今杂志也是法国最主要的印刷媒介,杂志最大的特点是针对性,你只喜欢时尚,那肯定不会去买数学方面的杂志,一本动漫杂志针对的肯定是动漫爱好者,而不可能是戏曲票友。因此一个类比于杂志的网络媒介,应该做到的是对网络上繁杂的内容,用户众多的爱好进行一种“分类”,尤其是大量互联网用户刚刚经历微博上各种垃圾信息洗礼之后,但新浪没有,内容仍然是混杂的,这方面宽岛做得更好,用户可以建立多个不同的专页,来实现内容的划分。所以与其说新浪轻博客是一个新产品,不如说是一个新浪微博的增强插件更贴切。

Continue Reading
Python Tech

Django操作NOSQL(MongoDB)数据库

每一个Django工程师在接触NOSQL数据库的时候,肯定都会思考一个问题:在Django中不能像操作普通的关系型数据库(以下简称RDB)一样,操作NOSQL数据库吗?当然可以,Django工程师几乎不需要什么学习成本,就能使用NOSQL数据库——因为有mongoengine这个模块。 MongoEngine由Python语言写成,提供一个很类似Django ORM的API,本文介绍mongoengine的基本使用,主要是数据结构的定义和内联表单的使用。 Install & Begin 需要安装两个模块,pymongo和mongoengine pip install -U mongoengine pip install pymongo 现在我们以最快的方式利用Django对MongoDB进行操作,请在电脑旁放置一个秒表,理论上完成这些操作的时间不会超过3分钟: 新建一个应用,其中新建一个docs.py文件,代码如下:

Continue Reading
Tech

Django多语言翻译轻量解决方案

Django自带的多语言方案过于笨重,各种繁琐的设置之后,还要创建编辑po文件,编译成mo文件。Django本来就是一个很适合敏捷开发的框架,在翻译问题这么折腾就太不Pythonic了。本文介绍使用localeurl和mothertongue来实现多语言支持,通过localurl实现URL的语言前缀,通过mothertougue来翻译相应的字段。 Install 安装localeurl和mothertongue模块 pip install django-localeurl pip install django-mothertongue 在settings.py文件中开启i18n支持,app列表中添加localeurl和mothertongue

Continue Reading