Django实际站点项目开发经验谈

开发了两个月的Django站点正式上线了,看着网站从无到有,从前端到后台,从本地开发到环境部署,一点一滴的堆砌成型,着实带给我不小的乐趣。前端

Django站点介绍:python

开发环境:阿里云服务器centos6.5  + Nginx1.7 

版本: Django1.8 + Python3.4

这是一个集合订阅内容&我的博客的Django项目。

目前项目集成:

| - 1.订阅功能:自动订阅虎嗅、人人都是产品经理、果壳网等60多个IT资讯网站内容,每4小时自动更新推送至网站首页。

| - 2.我的博客:我的博客功能,包含博客分类、推荐博客、阅读排行榜、热门标签板块。

| - 3.评论功能:使用多说评论。

站点连接:http://www.landsblog.comgit

说是经验谈,其实也只是开发后的一点小小总结,便是为了避免让本身继续犯一样的错误,也是为了能给一块儿学习的伙伴提供些许参考,下面就我开发中遇到的一些问题作一个总结:数据库

1.明确站点主题

这个多是最简单,也多是最容易被你们所忽视的问题。django

当我在刚刚制做Django网站的时候,只是单纯的打算作一个博客样式的网站:简单的博客列表,博客详情内容,时间归档,内容分类等等。代码写到一半,愈发以为这样简单的博客没什么太大意义,毕竟一个月100多的服务器费用,索性开发一些实用的功能。centos

笔者习惯一早起来浏览最新的资讯,苦恼的是每一个APP都要浏览一遍,挑挑拣拣,这样花费很多时间。所以笔者但愿能够在本身的网站中自动订阅最新的资讯,以及最新的技术。基于这点,笔者又从新开发了订阅功能,到目前为止,已经能够订阅60家媒体的最新资讯,而且每四小时自动更新。服务器

可是由于博客内容和订阅内容使用的是相同的框架,为了同步二者的不一样,修修改改,到最后实在没办法,以致于全部代码推到重来。框架

这件事给个人教训是:最好在网站的开发阶段就拟定好网站的主题,尤为是网站的功能,否则为了避免同功能之间的嵌合,将会花更多的时间去修改学习

2.优先设计数据库

肯定了Django站点的主题,接下来的步骤就是设计数据库,这一点要着重强调:数据库的设计要合理,不能想固然的设计,最好可以以表格的形式展示出来,避免之后遗忘,也避免内容的重复。测试

当初在设计数据库的时候想着全面一些,就把能想到的内容一股脑的添加上去,好比好评次数、推荐次数、分享次数,光是这一项就有许多功能重复的地方:分享就表明着推荐,也就表明着好评。这样繁琐的数据库字段我到最后也没有用上,白白浪费了数据库空间,也使得数据库内容臃肿不堪。最后仍是忍痛从新写了models。

这件事给个人教训是:不要小看数据库的设计,合理的设计可以大大缩减开发周期,避免没必要要的字段占据数据库的空间

3.为文章设计合理的slug

一般在访问文章的时候,咱们不会用带有中文字符的标题做为对象的主键,而是单独设计一个slug字段用于内容的访问,当文章少的时候还能够人为的编写slug,但当天天自动生成90+的文章数,单凭一我的为每篇文章设计与文章标题相关的slug,而且保证它们不重复,就有点力不存心了。

因此,合理的设计自动生成的slug,是很是有必要的。针对个人Django站点来讲,由于订阅的文章是同一时间自动更新的,所以但愿每一篇文章的slug都可以自带更新日期,便于我与文章的静态文件目录一一对应。另一点,对于文章数量较多的状况,怎么能避免文章主键不会出现重复?对此我为每一个文章定义了8位的字符映射码,有生之年是很难出现重复的。最后我采用了日期+随机码的方式做为slug字段的内容。

这件事给个人教训是:看似有意义的设计其实并无意义(slug与文章标题相关),合理方便才是最好的

4.不要到最后才将Django站点部署到开发环境中

通常状况下,咱们将Django站点在本地开发完成以后,才部署到正式的开发环境中。可是我建议在Django站点创建初期,便将其部署到正式环境中,由于正式环境和本地开发环境始终存在差别,若是一味以本地环境为基准来开发Django站点,到后面你会发现部署到正式开发环境的时候,会有不少配置问题让你感到头疼,并且也难以发现错误发生在哪里。

所以,建议你每完成一个相对完整的应用的同时,便将其同步至正式开发环境中,测试其效果。

5.善用git仓库

在版本修改的过程中,你会很容易忘记到底修改了哪些地方,尤为是隔几天以后继续开发,这种感受尤其明显。所以,善用git进行分支管理,进度管理。不要偷懒,把每次提交的注释写的清楚完整一些,对后续的开发是颇有帮助的。

6.不要修改开发环境中Python默认版本,用pyenv代替

说到环境布置,又让我想到一点,就是不要随便更改服务器的默认python版本,由于笔者用的是阿里云的centos6.5,该环境自带的是python2.6版本,而Django开发的最低python版本是2.7,我用的是3.4版本。最开始,我安装了python3.4版本,并将其设为默认,可是发现阿里云的yum命令是依赖默认的python2.6版本,遂又修改了yum的python依赖路径,本觉得没有问题了,但在后面的开发环境中,仍然出现了不少关于Pyhton安装版本与自带默认版本之间不兼容的问题。

好比:Nginx的默认python版本始终为2.6,无论我怎么修改,依然没法选择正确的python版本。最后,不得不从新将整个服务器环境从新创建一遍,用pyenv+virtualenv来控制全局的python版本,此次一切正常。不要尝试网上教程中的修改默认pyhton版本的方法,下场真的很凄惨......

以上就是目前我能想到的Django项目开发中所能遇到的问题,若是你们感兴趣,能够访问个人站点:http://www.landsblog.com,欢迎你们在下面留言,若是有什么问题,也欢迎你们提出。

相关文章
相关标签/搜索