APR

8

Fri

Author:EMINARCISSUS

被拍砖29次,接着砸!

升级1.3其实是自己早就想作的事了,更新内容不少,不过对自己而言尤其重要的3点更新是:

1:ContentFile的支持,可以在后端直接从request里读文件了,也就是说支持纯ajax上传了。

2:原生Logging的支持,之前Django必须用三方的logging组件,现在可以用python原生的logging机制了。

3:支持多数据库和某新兴的pylibmc。

 

对于2和3是自己一直期待已久的东西,其实还有多数据库和多cache的支持,这个对于大型站点而言可谓是重中之重口牙,django越来越成熟了,happy~

 

忘记了mark非常重要的一点:

从1.2.5开始django删除对象不会默认删除文件。这是自己的解决方案如下:

利用post_delete.connect(handler,sender=Class)的方法,

再handler函数内删除文件,如:

os.path.exists(object.file.path):

os.remove(object.file.path)

 

django可以说对文件的处理有点让人感觉哭笑不得,不过信号机制还是可以解决这个问题的wwwww

另外还有的问题就是有关非django 1.3(如1.2.5下)如何处理ajax上传文件?

这里借用alex的脚本一用(要求python2.5+,有with需求)

with BufferedWriter( FileIO( filename, 'wb' ) ) as dest:
    if raw_data:
        foo = uploaded.read( 1024 )
        while foo:
        dest.write( foo )
        foo = uploaded.read( 1024 ) 

不过这个方法有个弊端,就是上传文件大小只能限制再20m之内,20m之外就会出问题。

1.3引入ContentFile后则可以这么写:

from django.core.files.base import ContentFile

object.file.save(filename,ContentFile(uploaded.read()))

可以解决20m问题,万事大吉。

以上留作备忘,后续添加相关链接和原文。

废话完毕。借着这次更新1.3,自己把之前一直边唾骂边在用的uploadify给换掉了(这丫就一个坑爹插件,win下莫名奇妙crash,mac下直接io error,linux下也总有奇怪的惊喜),从而启用纯javascript上传的ajax插件File Uploader,从此以后不用担心浏览器再crash了之类的了,太好了。。。(其实自己曾经下了个决心,我要学会用flash写点snippet,结果翻了flex4不到5分钟,就扔一边了,语法来说,flash很正统不像某肥猪流语言,不过,表现上,还有复杂度上,还有效率上,这东西根本不配用这么高的复杂度来写,我个人宁愿用scriplet)

 

表情方面纠结来纠结去,最后用了2个小时把django的插件smiley进行了扩充,添加了views和前台的加载表情脚本。过一阵进行简单的抽象后可以放出来进行复用。没有扩用RazerGallery来写表情也是因为怕这样作会导致项目的耦合性过高最终会影响单元测试。

 

正则过滤评论也写完了,不过没用用正则来实现,而是通过BeautifulSoup来进行HTML分析和净化,没有对特殊符号进行替换。原因,有不少,其实从我个人因素,我更喜欢bbcode,而不是标签,尤其是对于复杂度很高的并且可能带有恶意尝试任意三方输入来讲。不过还是通过这个进行一个尝试吧,如果实在不行以后再作替换好了,暂时就先这样了。

 

也就是说,这个项目目前唯一还坑着的就是一个围脖系统和一个文件发布管理平台。这2个系统从逻辑上来讲则并不属于RazerBlog的项目范围内,算是协同作业吧,以后陆续抽时间会完成他们。

 

于是可以说,到现在为止,RazerBlog就彻底竣工了。构建前理想的功能目前也全部包括了,至于pingback,我暂时还想不到这东西对我有什么意义,所以,暂时就先不管它了。

 

之后的闲暇作业就是陆续把项目中自己整理的几个应用从程序中分离出来,实现复用,整理文档备后需。还有就是数据导出供Wordpress导入。

 

除此之外就是发生以外时的debug(这个才是噩梦)

总算是脱身了,今天搞完了这个感觉各种神清气爽,可以说是又解决一件事,虽然没花多少时间,但是没有完成就总舒不下这口气。

顺带提一下,水果的更新站点就一坑爹。直接点Mac update,告诉我要下载70个小时(爷爷,就1.6G的文件你下70个小时?!)

结果找了下help,发现proxy居然要改配置文件,结果找了下配置文件,却发现那丫事Mac Server的配置文件,**!

得,最后抓包获得了升级包的下载地址,1.4g的update pack,如今已经安装完毕,明天就能用上app store了,终于。。。泪目

最后,测试下表情, RazerBlog终于完结了.....(圆姐,qb,神马时候能再见口牙,啊啊啊啊啊)

smiley