POST请求参数存入数据库 - yann学长的运维开发指南31

in #devops8 years ago

说明

目前的进度及后续的课程
http://www.iamyann.com/images/0517/20180517220201.png
(html comment removed: more)

介绍

在上节的内容中,填写的内容是无法保持的,所以本节会介绍ORM,使用其比直接操作数据库方便一点.

今天的具体内容如下:

  • 把POST请求的参数存入数据库
  • 提交到数据库
  • 修改函数返回值
  • 不保存空内容的测试
  • 更新视图

把POST请求的参数存入数据库

更新上周的测试模块,添加三条语句

vi lists/tests.py

http://www.iamyann.com/images/0517/20180517210947.png

objects.count()是objects.all().count()的简写
对比数据库记录总笔数是不是等于1条

objects.first()第一条记录的对象
再对比对象的text内容是否等于给定值

测试文件也比较长了,回头需要重写一下

提交到数据库

运行测试报错,数据库笔数为0

self.assertEqual(Item.objects.count(), 1)
AssertionError: 0 != 1

调整视图

lists/views.py

http://www.iamyann.com/images/0517/20180517212032.png

写了个不是很完善的home_page函数,通过了测试, 回头需要更新一下

修改函数返回值

通过了单元测试,把返回修改下

vi lists/views.py
    return render(request, 'home.html', {
        'new_item_text': item.text
    })

不用获取了,直接使用对象

不保存空内容的测试

下面开如新的测试,这次的测试起源于一个需求:无内容的提交不要保存

再建一个测试方法

lists/tests.py

http://www.iamyann.com/images/0517/20180517213236.png
检测没有提交时,数据库笔数是否为0

更新视图

测试报错 1 != 0 failure

vi lists/views.py

http://www.iamyann.com/images/0517/20180517214943.png
调整视图文件,测试通过

建了一个新变量,其值是POST请求数据或空字符串

.objects.create是创建新Item对象的简化方式,不需要调用保存方法

预告

写了30篇小短文后,回头看看自己的公众号,感觉不是很连续
后续要整理下,每完成一个大的章节,就做一个大纲并附上链接,方便读者阅读

http://hero.iamyann.com/blog_webchat.jpg