抒发一下这些天用django做web项目的一些体会
最近接触了一段时间的python,觉得python写脚本还是挺方便的,做一个简单的桌面应用也很nice,但是随着深入,对python做功能复杂的web项目我彻底死心了,每个环节都是一堆的坑,部署阶段更甚,我真是被折磨的没招了,打算老老实实把项目迁到nodejs上面吧。希望有经验的django开发者,能指点一二。
先简要描述一下我的项目,整体框架采用django,项目功能涉及:
1.读写SQL Server数据库(完成)
2.文件上传和下载(完成)
3.读写Excel,读写txt(完成)
4.加密压缩/解压缩文件(完成)
5.ftp自动化上传和下载
功能点虽然有点多,但涉及到的表就几个,所以并不觉得复杂。之所以选择从未接触的python,主要考虑到python写起来比较简单,其次是考虑到项目比较简单,正好试试python的水有多深。
下面就细数一下我踩过的坑
1.对angular等前端框架支持不好
我是一个angular重症患者,angular是我做项目的标配,不仅展示效果好,而且代码优雅。但是django却对angular支持不好,对{{}}不识别,ng-repeat没有效果。angular最出彩的就是ng-repeat了,如果连ng-repeat都不支持,也没有用angular的必要了。所以只能乖乖的用jquery框架,简直像是从文明社会回到了原始时代。
2.开发不复杂,部署太麻烦
在部署的过程中,公司外网不通,方便简洁的apt-get是享受不了了,所有软件都要采用源码安装的方式。
①如果选择windows服务器部署:
第一步:安装apache服务器
第二步:安装安装mod_wsgi,这个东西是沟通python和apache的桥梁,她的型号不仅要和apache匹配,还要和python匹配。关键是python版本太高的话,下载不到符合python版本的mod_wsgi。
第三步:配置apache,指定项目路径
我是被卡在第二步,下载不到符合python版本的mod_wsgi,最后决定在linux上部署。
②如果选择linux服务器部署:
之所以选在linux服务器,考虑到项目部署可以直接使用nohuo的方式挂载,我就不用安装和配置apache了。结果也是一路的坑...
第一步:安装python。Linux服务器自带python,但是版本比较低是2.6版本的,我的项目用的版本是python3.6的,这里重新安装,经过一系列的安装和配置,把python3.6作为默认使用。这里千万别动系统自带的python2.6,不然yum就没法用了,我就是一不小心给删了,然后重装系统了。
第二部:然后就是安装django。
搭建一个最简单的django项目,跑起来没问题,终于松了一口气,总算能跑起来一个hello word,基础环境算是准备好了。
加密压缩解压缩:
本以为是个zip文件,因为后缀是.zip,死活解压不了。结果我的小伙伴通过观察文件头,发现它其实是一个rar文件。python操作rar文件的包是rarfile,这个rarfile模块只能解压缩,不能压缩。最后决定选择python操作shell命令的方式压缩解压缩。rar是windows下的命令,linux需要安装linuxrar,好吧,压缩解压缩这个问题终于解决了。
操作SQL
Server数据库:
本以为安装一个pyodbc就行了,结果发现linux环境下要安装:unixODBC,freetds,pyodbc
。看文档好像安装还是蛮复杂的,做到这里,我决定放弃了。考虑到后面几个功能模块没有做,真的不知道部署新版本的时候还有多少类似的工作要做。
心好累,相比于NodeJS和Java,jdango没有打包的概念,所有在项目中用到的包和库,都要在基础环境上安装好,项目才能跑得起来。关键好多环境还相互依赖,没有十足的耐心和能力是搞不定的。现在觉得NodeJS真好,纪念一下我在python道路上的苦逼岁月。

抒发一下这些天用django做web项目的一些体会的更多相关文章
- web理论知识--网页访问过程(附有Django的web项目访问流程)
当我们闲暇之余想上网看看新闻,或者看个电影,通常的操作是:打开电脑.打开浏览器.输入网址.浏览页面信息.点击自己感兴趣的连接......那么有没有想过,这些网页从哪里来的?过程中计算机又做了什么事情了 ...
- 做web项目时对代码改动后浏览器端不生效的应对方法(持续更新)
做web项目时,常常会遇到改动了代码,但浏览器端没有生效,原因是多种多样的,我会依据我遇到的情况逐步更新解决的方法 1.执行的时候採用debug模式,普通情况下使用项目部署button右边那个butt ...
- 做web项目时对代码修改后浏览器端不生效的应对方法(持续更新)
做web项目时,经常会遇到修改了代码,但浏览器端没有生效,原因是多种多样的,我会根据我遇到的情况逐步更新解决办法 1.运行的时候采用debug模式,一般情况下使用项目部署按钮右边那个按钮下的tomca ...
- java做web项目比较多
WEB就是轻量级:如果要炫,FLEX或即将普及的html5.0都能做到像C/S那样. java做web项目比较多:如果是桌面程序,还是走C/S比较成熟. 如果是B/S架构的,后台还是JAVA,前台可以 ...
- 三、自动化测试平台搭建-django-如何用mysql数据库做web项目
从这节开始到后面说的大概内容如下: 这里说的是Django做一个web项目的大概框架,从下篇具体说Django中的模型(查询..),视图(请求,响应,cookie,session..),模板(验证码, ...
- 用pycharm+django开发web项目
pycharm是python的一个商业的集成开发工具,本人感觉做python开发还是很好用的,django是一个很流行的python web开源框架,本文就是使用pycharm+django来开发py ...
- (转载)JWebUnit做Web项目自动化测试
原址:http://blog.csdn.net/plainfield/archive/2007/07/02/1675546.aspx JwebUnit加构在HttpUnit上,实际上也可以这么说是Ht ...
- Python+Django(Python Web项目初体验)
参考:https://blog.csdn.net/qq_34081993/article/details/79229784 Django是一个开放源代码的Web应用框架,由Python写成. 安装Dj ...
- Django 创建web项目之HelloWorld
Django.Flask.Tornado并称为python WEB三大框架.Diango是一个开源的web应用框架,具有开发速度快的特点.同时因为过度封装,具有性能低的特点. 创建Django项目,启 ...
随机推荐
- python中单星号(*)和双星号(**)的使用
1.单星号*:对元组解包:接收可变参数 2.双星号**:对字典解包:接收可变参数 python函数的五类参数类型及出现顺序:必选参数.默认参数.可变参数.命名关键字参数.关键字参数 参考: https ...
- 50行代码实现缓存,JAVA内存模型原理
遇见这样的高人怎么办??下面是一个简单缓存的实现,相当牛叉!自己看吧,只有50行代码. 摘自:http://www.oschina.net/code/snippet_55577_3887 import ...
- 使用webpack构建本地服务器
想不想让你的浏览器监听你的代码的修改,并自动刷新显示修改后的结果,其实Webpack提供一个可选的本地开发服务器,这个本地服务器基于node.js构建,可以实现你想要的这些功能,不过它是一个单独的组件 ...
- (转)MFC的GUI窗口使用Console输出函数printf
原文链接 在GUI程序中使用printf函数: #include <io.h> #include <fcntl.h> void InitConsole() { ; FILE* ...
- 怎样编写高效android代码
基于Android相关设备作为嵌入式设备范畴,在书写App应用的时候要格外关注效率.而且受电池电量的限制.这就导致嵌入式设备有诸多考虑.有限处理能力.因此就要求我们尽量去写高效的代码. 本文讨论了非常 ...
- Elasticsearch 理解
概述 Elasticsearch (ES)是一个基于 Lucene 的开源搜索引擎,它不但稳定.可靠.快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的. 特性 安装方便:没有其他依赖,下载 ...
- DirectShow控制台输出和保存视频设备名称
#include "windows.h" #include "TCHAR.h" #include <dshow.h> #include <ve ...
- jQuery 创建html
jQuery 创建html
- JAVA 模块
commons-lang3 maven repository, 项目主页 fastjson maven repository, 项目主页 fastjson 是阿里巴巴开源的序列化和反序列化 JSON ...
- 【POJ 1080】 Human Gene Functions
[POJ 1080] Human Gene Functions 相似于最长公共子序列的做法 dp[i][j]表示 str1[i]相应str2[j]时的最大得分 转移方程为 dp[i][j]=max(d ...