django 数据库 时间数据传输Bug修改以及体会 ——Einste的django结队编程<一>

来源:互联网 发布:网络课程录制软件 编辑:程序博客网 时间:2024/06/14 08:45


django数据库  时间数据传输Bug修改与体会--Einste的django结队编程<一>


        本人虽然不是第一次使用django来做一些轻量级的数据库开发,但是之前的开发都是做一些简单的库,无论是django在传输数据上的快速性还是django开发的迅速性都没有得到切实的感受,这次开发过程中虽然拿到了很多现成的code,但是有很多django开发过程难以忽略的问题是我第一次遇到,所以在不断地尝试与不断地谷歌、百度当中总算在对这个框架的理解上又更进了一步,这里就分享一个本人在开发过程当中遇到的bug。


<pre style="background-color:#ffffff;color:#000000;font-family:'宋体';font-size:9.6pt;"><span style="color:#808080;font-style:italic;"></span><pre name="code" class="python">class ActivityDetail(APIView):    #@login_required()    def get(self):        self.check_input('id')        temp = Activity.objects.get(id = 'id')        #temp = Activity.objects.get(id=1)        ActivityDic = {}        ActivityDic['name'] = temp.name        ActivityDic['key'] = temp.key        ActivityDic['description'] = temp.description        ActivityDic['startTime'] = temp.start_time        ActivityDic['endTime'] = temp.end_time        ActivityDic['place'] = temp.place        ActivityDic['bookStart'] = temp.book_start        ActivityDic['bookEnd'] = temp.book_end        ActivityDic['totalTickets'] = temp.total_tickets        ActivityDic['picUrl'] = temp.pic_url        ActivityDic['remainTickets'] = temp.remain_tickets        ActivityDic['currentTime'] = datetime.datetime.now()        ActivityDic['status'] = temp.status        return ActivityDic

先解释一下上面的代码,这是一个用于显示某活动信息的一个class, 继承了外部的APIView,其作用并不会在这里的代码体现出来所以不做解释。
可以看到我define了一个get函数,这是用于获取到django构建的服务器当中存储的信息,在这里就是获取我们上传的活动详情,这个活动详情是存在models.py下的一个
表Activity里面,这里使用的一些基本函数我也不在此做解释了。

这个代码在运行的时候会在页面上返回一个错误

这就很奇怪了,这里报了一个关于id的错误但是我仔细查看了一下这里并没有发现id元素能导致的错误,我的同伴提醒我从编译器上查看bug,所以我就查看了一下
Pycharm上面报出的错误:
    

     报错不变但是我看到了报错是在68行,所以我查看了一下68行,68行代码是

<pre style="background-color:#ffffff;color:#000000;font-family:'宋体';font-size:9.6pt;"><pre name="code" class="python">   ActivityDic['currentTime'] = datetime.datetime.now()

      

      其实我用这个datetime的时候就很有疑问这个函数到底返回的是什么,我上网查了一下,才知道这个函数返回的数据格式是JSON并不支持的,而我们的DJango传输数据时

      使用的恰是JSON,如果数据格式出现问题就会报出BUG,所以改成这样

   ActivityDic['currentTime'] = datetime.datetime.now().timestamp()
这个timestamp()函数是一个将datetime.now()返回的时间数值转化为时间戳的函数,JSON是支持时间戳的返回的,于是bug就解决了。


这是一个结队编程遇到的错误,当然这个bug的修改不能归功于我一个人,从我的角度来看,结队编程有助于修改bug,毕竟当局者迷,很多时候自己找一个下午或是
一个晚上都无法发现的错误,你的队友也许一眼就能看出来,无论是粗心还是队友在这里有所经验,这样的修改都可以大幅增加bug的修改效率,在讨论这个问题过程中
你也可以弄清楚这个问题背后的编程知识,但是我必须说,结队编程开发速度会降低很多,两个人一起写代码,就无法同时完成一个阶段的所有任务,如果这个阶段的
任务只是繁琐,那么结队编程只是让一个人帮助另一个人修改一些无聊的错误,对于两个人对整个框架整个开发的理解并没有任何帮助,所以结队开发需谨慎。






0 0