实习三个月的地一个完整项目总结

          今天做完了实习开始到现在的唯一一个我独立完成的系统,仅仅是一个登录验证以及权限控制的权限管理系统。

          总结一些我的这十天开发的路程。

          就在上上周的周四,cto有事回家了,回家之前告诉我说,让我完成公司的后台管理系统的权限控制部分和权限分配系统,我就当时觉得这可能是我在公司项目上的一个巨   大而有很快乐的挑战。

         周五,昆大神和我整理了一下架构,告诉我说,不要着急写代码,必须要把每一步想清楚了,在写代码, 由于当时没有文档,于是几个开发就大概根据之前的工作经验,   拼出了一份“麻雀随小,五脏俱全”的文档,我周五就开始学习一些基本的东西。

        项目当时没说使用什么构架,于是我选择了公司现在所有项目都使用的flask,之前我的一些统计任务使用的全部都是tornado,我个人在实习之前使用的是django, 这次使   用flask也是为了方便,也是怕出现问题,自己没有办法解决的耽误项目进度。

       我确实说对了,我遇到问题了,哭    。

       flask我之前仅仅写过晓得demo,基本登录注册都没有的那种,所以可想而知,有多难,但是我还是努力,开发,因为不会的地方,有些可以照抄公司的项目,有些直接找大神就行。

       最先遇到问题的地方就是python的orm,sqlalchemy,这个东西,大多数的教程是英文的,我选了公司项目一样的架构去做,不过最终结果我没有选择orm体系,我选了sqlalchemy的sql体系,这个地方我在最初一路无阻,哈哈,后来只有哭的份了。

    第一步

     先写架构,使用mvc体系,

     .
├── angel
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── model
│   │   ├── authority_group.py
│   │   ├── authority.py
│   │   ├── base.py
│   │   ├── group.py
│   │   ├── __init__.py
│   │   ├── login_log.py
│   │   ├── user_group.py
│   │   └── user.py
│   └── views
│       ├── base.py
│       └── __init__.py
├── config.py
├── create_table.py
└── README.md

           这个选择没有错误,

       第二部,我以为我想清楚了没一个流程,我开始写代码了

          刚刚开始我 先按照经典的flask的view里面每个功能进行不同的分割。user,permssion,group,但是发现在多个文件中使用装饰器不好是,去看了公司项目,发现所有的  url都会使用,app.add_url_rule  来统一定义到application里面,这个坑,是我踩的最小的坑。

       第三部,用户登录限制,

          这个本来想用第三方的登录程序实现,但是最后我被大神否决,必须自己实现,因为这个里面涉及东西比较多,还必须要签名认证,并且写完之后代码必须review,这个     项目不能有漏洞,这也就只能自己照这公司的项目里面的实现方式实现一下,实现机制使用了session,

          但是学习django的我根本不知道什么叫做session。什么叫做cookice,这个地方的知识我恶补了好久:

          跑题一下,django确实是python的第一大框架,不可否认,你只要能想到的,大多数都是有集成的,你想要的功能中文文献都一大片,于是我使用django完成了一个blog  社区,我觉的自己很猛了。

          直到使用session去控制登录时候,我才发现,我错了,我不知道session是什么?cookice是什么?使用了半天学习了session和cookice,作出了装饰器,控制登录,那天   正好公司有人来面试,我看了一眼简历,发现那个人仅仅使用过django,cto不在,于是面试问题大家就讨论一下,我说了一句,可以问一下session的问题,就会知道结果         了。于是结局被我说中了。

       第四部,权限控制

         能添加用户了,能添加权限了,能添加组了。

         开始给用户和组授权吧!

         这些我就傻了,给用户授权的时候,我需要指明给那个用户,给他那些权限,我选了比较low的做法。

         先弄一个所有用户的list出来,

        点击对应的用户名,跳到权限页面,选中相应的权限和组,提交,这个就完成了授权,

        这个时候我问了一下,说我必须给一个外部接口,这个接口用来验证权限

       这个接口不难,接口调用规则是:

       需要给我一个user_id 和 action, 我返回能不能一个0或者1,这个查询我也被坑了,

       假设说,给我了一个用户的id,我需要去权限表里面查看用户有没有这个权限,还要去group表里面查,看有没有这个权限,这个时候sqlalchemy sql 的麻烦就出现了,这个必须使用 in ,这一下,我找了好半天,英文文档,我也是看醉了,最终解决问题,花费时间半天,唉,

       我以为完事了,

      第五部 ,自我权限控制

       之前我仅仅以为我提供一个接口,就算功能完事了(其他的要求功能已经完成)

       突然说必须用户在我自己的平台登录时候也要有权限控制,这些下我蒙了,我不知道怎么做,

       我先说一下我的个人理解

       我点击了这个链接,我怎么知道我点击了,我点击的动作,产生一个什么样子的action,这个action我要怎么拿到,之前的接口是提供给我了,现在是没有提供,我要怎么得到,但是这个问题,我没有想通,我找大神,大神不知道我遇到了什么问题,因为我不会描述这个问题,在这里我和Fu大神讨论了好久,他听不懂我说的问题,我试着努力描述,但是没有结果

      最后Kun大神看不下去了,告诉我,我们三个一起讨论一下。

      我开始在白板上面描述我的问题,画出了我想这个事情的经过,点击行为拿到action,

      最后我明白了,我自己错在哪里,

      用户点击这个链接,首先链接的处理函数会去渲染这个页面,这个时候调用get方法,但是在这之前,我能

    def app():

            user_id = get_user_id_session()

            perm = perm_user(user_id)

            if not perm:

                    return   redirect("/permission")

            return render_template("xxx.html")

    简单的实现了,

    我经过一番更改之后把这个变成了装饰器,简化了工作量

    第六部,展示用户的权限

      希望看到用户直接有的权限,和用户所在组的权限,

     但是当前我的实现是将用户的权限和权限组给出来,这个权限组有什么权限还要点击,不能直接显示成为:

     当前组是:xxxx

     这个组有的权限是 xx,cc,app,ddd

     由于对sqlalchemy sql 不熟,在这里一个sql语句坑了一下午,各种方式,我使用了dict传值,使用list,但是都达不到想要的结果,最后无奈,求Fu大神,给我写了一个使用了三个join 的sql 语句,最后在使用字典搞定格式显示

     于是就到了这了,明天继续暂定还缺什么功能

     总结一下:

      1.开始写代码之前的时间一定要是写代码时间的三倍,否则不要开工,

      2.开发文档,一定要有,仅仅靠经验,会被自己坑了,有些功能没有开发,有些功能开发完了告诉我又不使用

      3.时刻知道自己的项目进度,这个合理的把握在于,对这个东西熟悉程度,不要觉这个东西,三天就能,五天就行,看都不看文档,

      4.本来使用django可以三天完成,因为django的后台系统很牛的,直接弄好数据结构就完事了,权限分配和控制都很简单,这个我是想都学些东西,但是耽误了进度,这个不值了

      5.继续学习sql,这个我还是太坑了

      6.认真的整理一下python数据结构和装饰器,不要在被这些小的问题绊倒

      7.明天开完会再


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值