最近接触了一段时间的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. 安装SpringExt以查看schema文件

    安装SpringExt以查看schema文件 学习了:https://blog.csdn.net/ltianchao/article/details/43565167 spring ext啊 mvn ...

  2. hdu5289 Assignment (区间查询最大值最小值,st算法...)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5289 题意:给定长度为n的序列a和一个整数K,找出最大值和最小值的差值小于K的区间.输出满足条件的区间的个 ...

  3. 除了cPickle,cjson外还有没有更高效点的序列化库了

    除了cPickle,cjson外还有没有更高效点的序列化库了 http://blog.csdn.net/chen_lovelotus/article/details/7228745 msgpack最快 ...

  4. Django——WEB三层架构与MVC

    而我发此文的目的有二:一者,让初学者能够听到一家之言,是为解惑:二者,更希望抛砖引玉,得到专家的批判. 许多学生经常问我,MVC到底和WEB三层架构有啥关系? 开始时,我也只能给他们一些模糊的回答.时 ...

  5. react-native + react-native-tab-navigator 实现 TabBar

    1.安装 react-native-tab-navigator yarn add react-native-tab-navigator 2.页面调用 /** * 主页面 */ import React ...

  6. 通过内存映射文件来颠倒文本内容(暂没有处理Unicode和换行符)

    // ReverseFileDemo.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <windows.h> ...

  7. 【ASP.NET MVC系列】浅谈数据注解和验证

    [ASP.NET MVC系列]浅谈数据注解和验证   [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google C ...

  8. Sring容器的懒加载lazy-init设置

    默认情况下,spring的IOC容器中lazy-init是false的,即没有打开懒加载模式. 如果你没有看到这个lazy-init 的参数设置就说明是false啦. 那么什么是懒加载? 懒加载--- ...

  9. gcc支持的标签

    #include <stdio.h> #include <time.h> int main(/*int argc, char const *argv[]*/) { void * ...

  10. for zip

    private void zip(ZipOutputStream out, File file, String base) { try { if (file.isDirectory()) { File ...