最近接触了一段时间的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. 在Docker中从头部署自己的Spark集群

    由于自己的电脑配置普普通通,在VM虚拟机中搭建的集群规模也就是6个节点左右,再多就会卡的不行 碰巧接触了Docker这种轻量级的容器虚拟化技术,理论上在普通PC机上搭建的集群规模可以达到很高(具体能有 ...

  2. nginx 配置优化详解

    # nginx不同于apache服务器,当进行了大量优化设置后会魔术般的明显性能提升效果 # nginx在安装完成后,大部分参数就已经是最优化了,我们需要管理的东西并不多 #user nobody; ...

  3. NullPointerException异常的原因及java异常??

    所谓空指针异常,是因为用空(null)去调用属性或方法.   null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常.   <--主要有以下几种原因:   1.使用了未 ...

  4. mui 跨域请求

    <ul class="mui-table-view" style="margin-top: 25px;"> <li class="m ...

  5. C++常考面试题汇总(持续更新中)

    c++面试题 一 用简洁的语言描述 c++ 在 c 语言的基础上开发的一种面向对象编程的语言: 应用广泛: 支持多种编程范式,面向对象编程,泛型编程,和过程化编程:广泛应用于系统开发,引擎开发:支持类 ...

  6. Oracle 官网 jdk1.6 下载地址

    在oracle官方网站下载地址 http://www.oracle.com/technetwork/java/archive-139210.html http://www.oracle.com/tec ...

  7. React Native Android入门实战及深入源代码分析系列(2)——React Native源代码编译

    本文为老曾原创.转载需注明出处:viewmode=contents">http://blog.csdn.net/minimicall?viewmode=contents 在上一节中,我 ...

  8. spring自己主动装配Bean属性

    spring提供了3种类型的自己主动装配 byName:把与Bean的属性具有同样名字(或者ID)的其它Bean自己主动装配到Bean的相应属性中. byType:把与Bean的属性具有同样类型的其它 ...

  9. ios 调试过程捕获异常Stack 信息

    在AppDelegate,定义方法 void catchExceptionHandler(NSException *exception) { NSLog(@"CRASH: %@", ...

  10. unity, write/read txt file

    在Assets下新建文件夹StreamingAssets.然后下面代码可在其中生成test.txt文件,并读写: using UnityEngine;using System.Collections; ...