工作一月总结

目录:

  1:收获

  2:一些零碎的东西

  3:吐槽

前言:

  刚毕业,在上海担路网工作了一个多月,从7.12号到8.20号。

  上海担路网主要产品是服务于中小企业,帮其定制发布PC网站,手机网站,微信公众号等等,算是一个互联网工具提供商。其主产品的主要技术构成是Django,Angular以及Tastypie。商家用户在其设置界面(非Django的admin)输入某项的对应数据(AngularJS)后(通过Angular的$Resource)接入到Tastypie的API从而操作Django的模型,通过Django的模板系统(用了不少Bootstrap的样式)将其展示在此商家的用户面前。还有个旁系产品是完全的前后端分离的项目。

一:收获

注:有些回顾可能由于时间原因会遗忘或者出现一些问题

  • 第1,2周:

虽然写的是7.18的周任务,其实是7.12,7.18两周写的,第一周第一天布置环境,第二三天熟悉产品与代码的对应,后面几天写的就没有提交。

写的上面主要都是一些改动,Angular与Django方面的

其中记录两个解决费时多一点的:

  1)其中的"与"&“或”查询的实现:

    首先会想到使用Django的Q search

    一般使用如下:

    Poll.objects.get(
        Q(question__startswith=‘Who‘),
        Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6))
    )    而我的需求是从一个Hbase形数据中提取,所以是动态的传入一个dict并且实现或查询。我很傻得半天不知道如何去拼接,哎,只知道string的+拼接,其实抽象出来都是一样的,这里换成Q object的|拼接就完了。    search_conditions = Q()    for k,i in dict.items():      search_condition = search_condition | Q(k=i)  2) 查询改成POST提交    由于get提交的数据在url中会被服务器保存,所以在一些情况下改为post提交表单。    表单提交改为POST提交后的连带问题是分页,Django默认pagination是在url后通过/?page=n从而进入到get方法中,从而取出对应页的数据。这里的需求是将其改为post方法提交,但是依然是加入/?page=n到当前url,也就是所在request.method=“POST”中依然从request.GET中获取page参数。
    默认的使用如下:    {% if contacts.has_previous %}
            <a href="?page={{ contacts.previous_page_number }}">previous</a>
       {% endif %}    最后的解决办法是阻止翻页按钮的默认提交,将翻页按钮的href属性值加入到form的action中,然后点击提交form。这样的额外好处是还能够保持输入    大概代码如下    $("xxx").click(function(event){      event.prevendefault();      $("form").attr("action", $(this).attr("href"));      $("form").submmit()    }  *要注意查询次数与翻页的关系,翻页不应该增加查询次数
  • 第三周

    这周测试那儿卡了整整一天半,各种排错没找出来,最后发现是基础数据其中的一个字段忘加了,而程序中此字段在用于查询时又是必须的(写在Tastypie部分的build_filter方法中的)。顺便记录下使用FIXTURE还是自己手动create的区别,对于与本次测试无关的辅助数据用FIXTURE,也就是几乎不会去修改他,否则用create,这样更explicit。

    关于PEP8记录一点pycharm中的Code菜单栏的Inspect Code选项可以检测PEP8规范

   git相关的有点多,就不总结到这儿了,待会儿专门写一个。

  • 第四周   

  

  写自定义表单WIZARD部分整整用了一周,此功能是组里一个大神写的,Angular部分写的太猛,然后表单部分字段到前端的把模型类映射到表单类又弃用了Django自带的Widget,细节有些不太懂,所以改的很头疼,不会的时候有两天回家还看文档看到半夜,结果第二天直接昏昏沉沉。

  后台Angular部分效果如下:

  

  选择右边后添加到左边表单,点击表单后可以编辑此field的一些设置。最后在前台就能够直接出现此表单,填完后提交就多了条记录。

  在此推荐一个找bootstrap样式片段的网站:http://bootsnipp.com/.  我的wizard样式就是在这里面输入form wizard找到的。

  • 第五周

  

  这里主要做的是将上面每个字段项可让用户分组,从而对应起每一步的wizard。

  对了,这里有个注意点事外键约束的问题要考虑清楚,比如删除分组但并不能删除其里面的字段,因为可以选择不用wizard显示。但是默认的是要删除的,所以需要设置on_delete=models.SET_NULL

  对了,还有个需要注意的是在数据库新加字段最好考虑下后倾向写成null=True,否则出问题后回滚比较麻烦

  • 第六周

  

  喏,待的最后一周的任务,其中dumpdata注意命令应该就是常使用下面的形式了:python manage.py dumpdata store.UserCategory --indent 4 --format json --pks 178,179,... > testdumpdata.json话说我当时看文档不知为何看漏了--pks参数,就发现没法取出某天特定数据,就用了在.py文件中查询->序列化->再写入文件的方法,其实这个方法挺好,可以写个脚步一次搞定完,但是问题在于可读性,没法达到--indent 4的那种效果。

  一个卡的比较久的问题就是用例测试那儿了,由于刚写完单元测试,所以满脑子还在那儿的节奏,写了一大半才发现数据库使用了真实数据库而不是测试数据库,其实文档写的很清楚使用Django.test.LiveServerTestCase的话会在后端8081端口启动一个Django server,但是由于思维还在那儿这个一眼晃过没有在意。所以此时不应该再去访问8000端口,若有nginx的upstream server也应该对应改到8081端口(当然,可以自己指定端口号:https://docs.djangoproject.com/en/1.10/topics/testing/tools/)。这样的话才是使用的测试数据库的数据。

  还有一个小问题是写server name时不要把前面的http://加入,我图方便,直接从浏览器中copy的,自然多了之,最后发现有之不行。联系下图顺便对应下window.location对象

  

二:一些零碎的东西

  这里记录一些碰到过的很傻的一些问题(主要是我基础不好吧),还有些没记录的就遗忘了

  1. 关于Django模板变量与JS的联系问题

    1. 首先要明确的是模板变量在服务器端就会被赋值,而JS是在浏览器端执行的,所以常用的有

      1. 获取string形:var sth = "{{ sth }}";
      2. 获取其他对象:如在Djang视图中返回sth = json.dumps(dict(name="pd"))

                    则在JS中 var sth = {{ sth }};即可转化为JS的object

      2. 若把js文件用引入的方式的话,在js文件中就无法获取模板变量了,解决方法是将其写成函数,参数为需要获得的模板变量,这样在template中调用即可。

  2. 在Django 测试中post data,若使用json, 并不需要data=json.dumps(data), 写好对应的content_type即可。注意与JS中的微妙区别(js中如果是简单数据的话也不需要,否则最好序列化一下)

  3. 修改/host/etcs可以将外部主机绑定到你希望的主机(一般是绑定到本地啦)

  4. 用ajax提交表单时别忘记了加csrf_token,这里需要注意的是既可以将之加入到header中,也可以作为data的一部分进行发送,不过前一种更好。通过jquery的.ajax不同的options可以完成这两种不同的加入。(注,每个模板自带变量{{ csrf-token }})

  5. 关于显示html, 注意开启{% autoescape on %},若是在js中想获取带html标签的可用safe过滤器。注意js插入时用.html(哈哈,没想到我习惯了写.text()。搞得废了半天劲)

  

  未完待续,困===

  

时间: 2024-08-23 20:04:37

工作一月总结的相关文章

工作一月总结---知不足

1.知道哪里不足 最近在做的项目是利用Cordova实现的一个本地存储的密码管理器. Cordova虽说新接触,不过这次项目中用到的知识点并不复杂.但是项目进度却拖了两个礼拜.这里要提到 的是项目是本地存储.采用的html5中的localStorage技术来进行存储.主要是对数据进行常规的CRUD. 对于进度迟延,我分析了下原因.不是因为接触了Cordova,localStorage等新知识需要熟悉.前面已经提到,对于Cordova,这次用到的不过是基本知识.而localStorage虽说也是第

使用NuGet打包并发布至ProGet过程 (步骤详细,附python脚本)

一.基本知识 (1)NuGet : NuGet是一个为大家所熟知的Visual Studio扩展,通过这个扩展,开发人员可以非常方便地在Visual Studio中安装或更新项目中所需要的第三方组件,同时也可以通过NuGet来安装一些Visual Studio的插件等.作为一名开发人员,您可能也会开发一些公共组件以供他人使用,本文将一步步介绍如何以最简单的方式将自己所开发的类库包发布到nuget上,以供更多的人使用[1]. (2)ProGet: 非常优秀的库创建服务器,用于放置packages.

2014年个人工作总结

2014年的日常工作,从技术支持岗位调到市场.社区岗位上:日常技术处理工作变为博客.微信.微博.市场活动策划.发送奖品等.如果以此为界:即毕业10年内的主要是软件研发.团队管理.项目管理:第二个十年开始,有幸从事市场工作–琢磨怎么让更多的人知道葡萄城控件.把软件产品卖出去! 这个对我的改变非常.非常大,以前是专注的做研发,现在是撒网做市场工作,好像心态也变化了很多–喜欢与人交往.沟通.合作了. 读书:今年看的书不多,但相关性都挺集中的. <稻盛和夫的人生哲学:活法全集>:2012年公司要求中级

项目管理学习笔记之二.工作分解

项目管理个人能力-- 计划分解的能力在项目管理里面,计划分解是一种非常重要的能力和技术方法.它的英文缩写叫做WBS, work breakdown structures,它是教会我们怎么样把一个复杂的问题简单化.工作分解大体可以分成两种分解方式,分别是按时间分解和按可交付成果分解. 1.1. 按时间分解 所有的项目都会有确定的开始和结束时间,所以,从理论上,每个项目都可以按时间来分解.根据时间节点来划分项目阶段来进行管理的好处是不会有遗漏的工作.只要这个项目的时间节点是清晰的,按时间来分解的话,

听大树(宋晓楠)老师讲《高效工作与时间管理》心得体会

偶然的机会,能够听大树老师的时间管理,经过这两天的反复思考和体会,以及阅读了几篇同伴的写得心得体会,我也想把我的心得体会写下来!共同学习! 先说说大树老师的时间管理观念! 图1 大树老师在讲解 总体来说,就是收集整理->搞定->回顾, 这样的一个循环过程 一.收集 这个从六个方面来说:工作.身体.心灵.家庭.圈子.财富, 具体的意思,我就不说了. 我就说说怎么收集吧, 从这六个方面分析,得出自己想要在每个方面达到的目的,或者自己希望有一个什么样的设想, 把这所有的想法都写下来. 二.筛选 对自

工作笔记---巡检记录

以下是工作中一些思路实现的笔记,业务需求是: 1.简易日历 2.质押物提交后的一天开始到当前系统时间之间才可以提交质押物 3.没有提交质押物的日期里面的图片以灰色图片站位,已经提交质押物的日期里面的图片以红色图片站位 4.图片点击之后可以出现modal,modal中需要有图片轮播,需要前端删除,后端删除,上传图片,图片上传限制 经验分享: a.后端返回给前端的数据可能比较乱,这个时候需要前端写一个适配器函数,也就是把后端的数据进行转换成前端某一个插件适用的数据结构.适配器函数很好用哦~在工作的其

MySQL查询昨天、今天、7天、近30天、本月、上一月数据

在开发或者统计时,我们可能需要统计某个表的数据.比如:查看今天新增的文章.计算本月新增的用户数等.这种类似的需求会有很多,也会很常见,可以使用sql的技巧来完成这些工作.我把用到的一些sql语句做了总结,希望能够给大家提供一些帮助,同时也欢迎大家评论或者留言补充. #=============================================== #昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1

一月七笔千万美元投资!国内VR行业在刮什么风?

虽然直到现在仍然没有一款真正能够彻底普及并改变大众操控方式的虚拟现实设备出现,但其已经被认定是未来人类社会中不可或缺的重要组成部分和工作.生活.娱乐.休闲载体.而虚拟现实设备.内容在今年年初CES展会上的大放异彩,再度诠释着自己无限的潜力和活力.在全球VR行业快速前进的大背景下,国内VR行业也在快速成长. 从衡量新兴产业成长速度快慢的融资情况来看,国内VR行业显然已经得到足够重视.尤其是在2015年12月底到2016年1月下旬这一个月时间中,多笔天价投资砸向VR行业的细分项目.不仅虚拟现实硬件设

工作和学习矛盾之我见

LZ最近两天工作有点儿心不在焉,不在状态,对此LZ对老板.经理.老大说声抱歉. 从一踏入社会工作,我就告诫自己一定要认真工作.努力学习,尽最大努力提升自己,尽早实现自己的目标.所以我在经常利用工作以外的时间来坚持学习,有时如果工作不忙的话,我可能会利用工作时间在学习.但是最近LZ发现自己对工作的业务理解并不是那么好,别人问我关于业务的方面的东西自己也是一知半解,对此LZ深表惭愧.虽然在新公司干了三个月,但是对具体的核心业务理解还不是那么深.虽然每天完成都是坐在那里工作,但对工作的收获并没有超出我