django之我践
做了半年的django框架下的开发,从零到有,一些东西希望对新人有帮助。
因为要和朋友一起创业,互联网项目,其实就是一个网站,我们都以为自己看到了机遇,结合当前发展火热的豆瓣、42区等,作为技术合伙人的我选择了apache、django、mysql这样的服务器架构,网页端还是js、css、html这些。不过我没有用过django,第一件事情就是上网找了python和django介绍的资料,第二天就开始了代码的编写。
刚刚开始,定义好了界面的大致布局格式,就开始编写前端页面,一开始的时候有六个页面,每个页面都单独写了自己的html和css,写好在ie8上OK过后就开始做服务端,做服务端的同时设计了数据库,django的数据库封装的非常好,只需声明自己的model,以后用到的时候都不用考虑主键、外键之间的关系,简单易用。接下来就是进行页面数据的布局,django将前端展示和数据完全分离开来,基本上做的就是从数据库里面读出数据,初始化好变量,前台叶面就可以直接用了。
做了几天过后,感觉页面需要统一风格,否则别人点着点着都不知道是不是还在这个网站,所以把公共的头部,尾部和CSS提取出来作为公共的部分。同时一个网站其实很多地方都在不断重复,比如评论,这时候又把评论这样的东西作为一个单独的页面,其他页面需要用的时候简单的包含这个页面和对应的脚本就可以了。这个时候发生了csdn账号泄露的事件,为了避免自己也出现这样的问题,在系统中加上了多重单向加密的算法,不过这个算法是django已经携带了的。这个时候的系统已经有了注册登录,找回密码,修改个人资料,个人主页,系统首页、文章系统等。
说到这里,懂django的人就该问了:为什么不用django自身携带的强大建站功能呢?原因是这样的,我们需要django一些已有的功能的支持,比如刚刚说的担心加密算法,但是也深恶痛绝修改别人写好了的模块,有时候修改一个模块功能来适应自己的需要比自己开发这样的模块还难以把握。在我们的系统中,为了坚持原创,自己做了文章系统,文章系统有什么不好做的呢?没很多不好做的,唯一不好做的就是富文本编辑器。因为不同的浏览器支持不一样,用户的操作也各不相同,在我做的时候,这块花了特别多的时候,很多次都想直接用别人的东西了。但是我们不希望做的山寨,所以坚持了下来。还记得在开发完富文本编辑器过后,一个朋友用的时候发现发出来的东西始终格式不对,我怎么都没能重现,最后查看了数据库,问了操作方式才知道他直接从word中复制过来,而word的源头又是从别的网站复制过来的,出现了许多非标准html里面的东西,系统无法识别,也就不能屏蔽。
在总结了流行元素过后,我们的主交流展示页面采用了ajax刷新的样式,为这个问题团队内部有个漫长的辩论,辩论主题就是分页与ajax刷新谁更适合我们,最后依靠ajax的操作流畅性获得了胜利。当时pinterest的瀑布流吸引了我们,我们做的产品展示页面使用了这样的样式,内容更充实。
前端说了不少,再来说个后端的问题吧,数据库全文检索绝对算是后端的一个挑战,而且结合了django的就更加麻烦了,因为我们系统要求能够在用户输入一些特定东西的时候能够像知乎一样弹出相关的东西,但是我们又不具备知乎一样的服务器能力,所以专门做了许多的表来寄存,效果没有经过大考验,所以也不清楚到底怎么样,不过简单够用了。中间也用过开源架构,但是那些东西的使用对于我们的初期的服务器来讲,负担不起,很多都是说的很棒,但是取到自己想要的结果却要花许多额外的时间。
为了留住客户,我们还开通了comet功能,不过在这里我想对那些想使用comet功能但技术级别还不够的程序员说:请不要使用apache服务器。因为apache要求每一次请求返回都必须要返回结束标注,只要不返回那么该用户对应的线程就会挂死,在前端看来就是服务器无响应。而且一旦发起第二次请求(比如点击跳转),那么返回页面数据就会是你不想要的值。,最后我们不得不将这个时间comet改成了前端隔一个不是很长的时间发起一次请求。但是就算是这样我们服务器还是会常常报告错误(当然不是展示给用户的,用户可能会觉得这次点击怎么没反应),发生错误的原因就是comet请求还没有返回,前端又发起了一次请求。
说了这些,那些在这条路上遇到我上面提到的那些问题的工程师们,可以向我来取经哦,不保证能解决你的问题,但也会帮你少走点弯路。

浙公网安备 33010602011771号