这段时间一直在学python和django,准备写个小小的blog巩固下自己学到的东西,看到了GAE上的一些程序,大部分都是纯python的,想找一些基于django的,还真是难。无意中搜索到一篇文章,就翻译一下,渣技术,实在不行,就去看en文的吧。
Michael Trier在两年以前就写了一篇叫“基于django的blog引擎在哪儿?”。James Bennett随后也跟着写了一篇名叫“哪儿才有django的blog应用”,他论述了为什么最终没有Django blog engine(也就是基于django的博客引擎)。最近Daniel Greenfeld写了一篇“向哥展示你们的开源Django blog吧”,它里面,他定义了这个Django blog项目所需要的各项要求。自从读了那篇文章以后,我就开始一直写现在的这篇文章。
下面我挑选了一些我相信你应该会注意的blog引擎,并且根据它们最近的更新日期排列。如果这些blog engine的作者描述了他们的blog,那么我就直接引用作者们的描述,如果没有,那哥就总结一下我对该项目的一些了解。如果你有自己开发的blog引 擎并且值得哥注意的,那么就在下面留言吧,记得加上姓名和地址。
Byteflow博客程序并没有被包含在下面,这是因为这个项目在我写这片博客之前就已经关闭了下载的地址(= =!)。
Biblion
标语:eldarion.com 的blog程序一般适用于企业或者项目级别的引用。
源码地址:http://github.com/eldarion/biblion
最后更新:2010年2月9号
在线的demo:http://eldarion.com/blog/
描述:Bilion是eldarion.com的一个已经被提取和开源的blog程序,这个blog目前的定位是,它能够被应用于类似的 eldarion.com和pinaxproject.com这样的网站或者博客项目。一旦我们完成Bilion的功能,那么我们就用它去代替内部的 Pinax博客程序。
特点:
1.多渠道支持(比如:技术对业务) #这句真没看懂啥意思
2.使用Creole作为标记格式
3.Atom feeds #求翻译帝现身
4.在博客发布前预览其效果
5.可以选择同步推特
Django-article
标语:牛X的基于django开发的博客引擎
源码:http://bitbucket.org/codekoala/django-articles/
最后更新:2010年2月8号
现在demo:codekoala.com
描述:作者是Josh VanderLinden,牛X的基于django开发的博客引擎。
显著特点:
1.标签系统
2.在django的后台中自动完成标签功能
3.支持草稿(就是现预存,以后再发布)
4.文章到期设定 #这是啥设定啊,还翻译有毛病
5.可以使用文本或者HTML或者使用Markdown或者ReStructured Text或者Textile markup来写文章。 #这里面有几个属于不是很懂
6.支持相关文章显示
7.支持后续文章(就是上一篇下一篇)
8.支持Disqus评论系统 #想知道Disqus是啥,请猛击。
9.文章分页存档
10.支持多语言(国际化个锤子)
11.支持为每篇文章添加个单独的链接,并且检测该链接。 #连wordpress的url设定差不多。- -,我猜的。
12.字数统计 #这个功能到底有个啥锤子用啊
13.支持最新文章的RRS Feeds
14.支持最新的文章标签的RRS Feeds
娘的,真累,而且翻译得不好,以后有时间再翻译翻译吧,真蛋疼。
django中Admin的一些细节
django中有一个叫admin的管理界面,可以和简单的配置和使用,用来完成一些CURD工作。
这段时间正好想通过写个基于django的blog,从中把知道的东西系统化。
这与怎么安装,如果在django中添加自己的模块就不说了。直接记录自己不是非常熟悉的一些问题。
1.设置字段可选
这个问题就是看你是怎么建表的,前面说过,djanog可以直接通过模型建表,而通过django简称的表呢,每个字段的默认值都是为NOT NULL的,而自己建表的话,一般都是为NULL。
在mysql中,NULL表示未知的,非法的,一般用来指定空值。
一般我们要指定某个字段是可选的话,在模型中,指定参数为”black=True”就可以了。
在编写模块的时候,一般就指定了字段的类型以及长度。我们也可以设置日期型字段和数字型字段的可选。同样是通过设置参数blank=True就可以。但是一般要加上一个NULL=True,但是它并没有改变数据库,django一般是不会修改已经生成的表的。
自定义字段的标签
因为django的admin直接使用了字段名称作为表单的名称,如果想弄成中文的话,那么在字段的参数里面设置verbose=”就好。如果设置成中文,别忘记设置文件的编码。
以上的修改都是模块级别的修改,修改的模块的组成部分,而这部分是管理工具所能用的。
自定义ModelAdmin类
1.自定义列表
这是针对管理工具的配置。可以通过自定义模型中的__unicode__函数,返回要列出的字段。
2.自定义表单
通过定义一个ModelAdmin类,通过指定fields的属性值(一个元组)实现对表单先后排列。
django的安全问题
这篇东西写完了以后,就准备写个留言板,熟悉python以及django。让后再写个blog,当然了功能不可能写得很多,纯粹给自己练练手,让后再开发个企业网站啥的,研究下常用的功能以后,就插入了了解python。
在django book上面的内容了解得差不多了,然后还有一些应用可能目前还没办法用到,所以想想等以后用到的时候再回来看看,包括国际化啊,子框架,中间件这些,准备先了解个概念,等以后用到再研究。
还是现说这一章的安全问题吧,这个地方也是我的一个薄弱点。
1.任何从客户端传递过来的数据都应该经过检查,无论是用户数据(表单)还是带外数据(HTTP头,cookie之类的)。
2.SQL注入
SQL诸如就是改变网页的参数,加入一些SQL片段,让后让网站直接运行,从而得到他想要的数据,或者直接删除了。
解决方案:那就是转义了,django默认是对接受到的SQL进行转义的。但是如果想接受原始的SQL语句的话,可以使用extra()函数。
3.XSS(跨站点脚本攻击)
XSS就是在页面被渲染成HTML页面之前,向网页中插入一些<script>标签形式的HTML代码。一般就是为了获得用户的 cookie信息或者session信息。也不知道为什么要劫持页面,可能是蛋疼吧。他插入的HTML集可能是个钓鱼的表单,骗你输入一些敏感内容。
解决方案:首先,我应该很明白,任何用户输入的内容都是应该进行转义的。为了防止被XSS,django会转义所有的变量值。
4.伪造跨站点请求
CSRF就是一些蛋疼的web站点利用正常的用户去下载某个站点的URL时候,这个站点已经通过信任验证,所以攻击者就利用这种被信任的状态做些OOXX的事情。
解决方案:django有内建的工具来解决。
5.会话(cookie和session)
会话的攻击方式很多,比如伪造cookie,伪造session,会话中毒啊,诱骗用户充值sessionID,方式很多,而且都是在cookie和session上做手脚。
解决方法:不要在URL中包含session信息,这个是很安全的,而且django也不容许URL中包含session。不要在cookie中保留数据,只保留一个ID就行了,毕竟cookie是存储在客户端的。如果要在模板中显示session,那么请转义。
6.debug信息被暴露
很多时候,在开发站点的时候,我们都是开启了debug模式,因为它能高速我错误的情况。但是有时候上线了,却仍旧开启了debug模式。
解决方案:在settings.py中设置debug为false,如果使用了mod_python,那么还需要在apache的配置文件里面设置PythonDebug Off。
总的来说,就是不要相信用户数据,包括表单也好,啥也好。同时也不要相信URL的参数,因为它们是可变的。对文件和文件夹的权限设置要做得很好。
在apache上部署django
好吧,继续每天不更新不舒服斯基,不折腾就会死星人。
早上花了以一上午的时间,在apache上成功的部署了django,虽然还有写地方不明白,但是记录一下又不会怀孕,顺便加强印象。
好吧,至于django如何安装,apache如何安装,python如何安装就不废话了,直接记录。
首先是配置好apache的开发目录,我选的是D:/py,让后python django-admin.py startproject mysite,开始一个项目,然后在D:/py下建立一个mysite的文件夹,复制,copy。
然后优势配置apache了。这次的配置稍微有点麻烦。首先:
django的模型,以及数据库抽象层
好吧,继续学习,继续折腾,本来不想写的,但是django的数据库抽象层太强悍,因此记录一下,也加深自己的理解。
本来,python已经提供了很好的数据库支持,而django更多的是不让你写一句sql,而能完成一个以sql驱动的项目。
当然,前提是依旧得安装MySQLdb,不让是无法没有engine的。
配置我们的数据库。依旧是在settings.py里面配置,配置的对象是DATABASES字典,一般如果只有一个数据库,那么配置默认的就好了。
每周一回头
如果要给这个星期加上一个tag的话,那么久是培训鸟。一共培训了3天,严格来说是2天半,但是花了三天时间。一个是两天的,一个是一天半的,具体的详细的深入的前面都说了,这里就没什么好说的了。感觉就是偶尔花点时间去听听培训还是有点必要的。
然后就Python也有一些眉目了,昨天用Django实现了hello world,感觉Python像要深入还是要花时间的,但是Django确实是个不错的东西。更多神奇的地方还是得深入了解了才知道。
然后做了个小小的决定,就是以后可能不用QQ了,但是要说彻底的不用,估计也不现实,毕竟有些朋友和客户对于QQ的依赖还是灰常的大的。只能说逐步 的减少对于QQ的依赖,可能到有需要的时候才上吧,而晚上我估计是不会再上鸟。转战Gtalk,虽然它的输入框很小,而且是个很纯粹的产品,Gtalk不 能普及的原因,大概和MSN一样吧,不够娱乐。
然后就是,7月份完鸟,然后8月份来了,根据目前的情况来看是,8月份会更忙,但是依然不能影响到我去旅游的决心。只能说加大我工作的效率吧。
然后可能会彻底的放弃Firefox吧,用chrome,我从最开始的IE,到后来的Firefox,再到现在的chrome,每一次都能说是自己性格的一个体现。喜欢chrome的快速和简单。就像编辑器我放弃了zend一样,更喜欢简单的notepad。
然后可能会抛弃抓虾,改用google reader吧,因为随着我订阅数量的增大,好好的管理我的订阅也是灰常重要的。
然后最后呢,本来有个事情想说下的,想想算了,我觉得我应该成为一个纯粹的人,不能为太多蛋疼的事情,而迷失自己。
最后就是希望奶奶身体能好,8月份以后一定要抽个时间回去一趟。这个,是必须的。
然后以后的blog更新,更多的是写一些对于技术,以及对互联网时间的看法,以及对于某些互联网产品的感谢。
做个纯粹的互联网人。