最近接触了一段时间的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项目的一些体会的更多相关文章

  1. web理论知识--网页访问过程(附有Django的web项目访问流程)

    当我们闲暇之余想上网看看新闻,或者看个电影,通常的操作是:打开电脑.打开浏览器.输入网址.浏览页面信息.点击自己感兴趣的连接......那么有没有想过,这些网页从哪里来的?过程中计算机又做了什么事情了 ...

  2. 做web项目时对代码改动后浏览器端不生效的应对方法(持续更新)

    做web项目时,常常会遇到改动了代码,但浏览器端没有生效,原因是多种多样的,我会依据我遇到的情况逐步更新解决的方法 1.执行的时候採用debug模式,普通情况下使用项目部署button右边那个butt ...

  3. 做web项目时对代码修改后浏览器端不生效的应对方法(持续更新)

    做web项目时,经常会遇到修改了代码,但浏览器端没有生效,原因是多种多样的,我会根据我遇到的情况逐步更新解决办法 1.运行的时候采用debug模式,一般情况下使用项目部署按钮右边那个按钮下的tomca ...

  4. java做web项目比较多

    WEB就是轻量级:如果要炫,FLEX或即将普及的html5.0都能做到像C/S那样. java做web项目比较多:如果是桌面程序,还是走C/S比较成熟. 如果是B/S架构的,后台还是JAVA,前台可以 ...

  5. 三、自动化测试平台搭建-django-如何用mysql数据库做web项目

    从这节开始到后面说的大概内容如下: 这里说的是Django做一个web项目的大概框架,从下篇具体说Django中的模型(查询..),视图(请求,响应,cookie,session..),模板(验证码, ...

  6. 用pycharm+django开发web项目

    pycharm是python的一个商业的集成开发工具,本人感觉做python开发还是很好用的,django是一个很流行的python web开源框架,本文就是使用pycharm+django来开发py ...

  7. (转载)JWebUnit做Web项目自动化测试

    原址:http://blog.csdn.net/plainfield/archive/2007/07/02/1675546.aspx JwebUnit加构在HttpUnit上,实际上也可以这么说是Ht ...

  8. Python+Django(Python Web项目初体验)

    参考:https://blog.csdn.net/qq_34081993/article/details/79229784 Django是一个开放源代码的Web应用框架,由Python写成. 安装Dj ...

  9. Django 创建web项目之HelloWorld

    Django.Flask.Tornado并称为python WEB三大框架.Diango是一个开源的web应用框架,具有开发速度快的特点.同时因为过度封装,具有性能低的特点. 创建Django项目,启 ...

随机推荐

  1. makefile opencv的案例

    CXX = g++ LIBS +=`pkg-config --libs opencv` INC +=`pkg-config --cflags opencv` CPPFLAGS += -g -std=c ...

  2. 【MySQL】海量量数据查询优化

    参考资料: mysql处理海量数据时的一些优化查询速度方法:http://www.cnblogs.com/lingiu/p/3414134.html mysql千万级大数据SQL查询优化:http:/ ...

  3. 可伸缩Web架构与分布式系统(1)

    开源软件近年来已变为构建一些大型网站的基础组件.并且伴随着网站的成长,围绕着它们架构的最佳实践和指导准则已经显露.这篇文章旨在涉及一些在设计大型网站时需要考虑的关键问题和一些为达到这些目标所使用的组件 ...

  4. Selenium webdriver Java 高级应用

    对于这一段还蛮有感慨的,只想说,代码还是需要自己去敲的. 1. 改变用户代理 import org.junit.AfterClass; import org.junit.BeforeClass; im ...

  5. c++解释--百度百科

    c++ C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛:C++支持多种编程范式 --面向对象编程.泛型编程和过程化编程.最新正式标准C++于2014年8月18日公布.[1]  其编程领域 ...

  6. 使用AVPlayer制作一个播放器

    代码地址如下:http://www.demodashi.com/demo/11685.html AVPlayer 是一个强大的视频播放器,可以播放多种格式的视频,缺点是没有控制界面,需要自己去实现. ...

  7. 【MyBatis学习03】原始dao开发方法及其弊端

    上一篇博文总结了一下mybatis的入门,接下来就要开发dao方法了,这篇博文主要总结一下mybatis中原始dao开发的方法,最后并总结一下原始dao开发方法的弊端.mybatis中dao开发应该使 ...

  8. select/poll/epoll原理探究及总结

    select,poll,epoll都是IO多路复用的机制.I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作.但select ...

  9. web页面性能分析一些网址

    https://developers.google.com/speed/pagespeed/insights/

  10. tony_nginx_01_如何在linux系统下安装nginx、pcre、zlib、openssl工具

    nginx可以使用各平台的默认包来安装,本文是介绍使用源码编译安装,包括具体的编译参数信息. 正式开始前,编译环境gcc g++ 开发库之类的需要提前装好,这里默认你已经装好. ububtu平台编译环 ...