新增项目的URL - yann学长的运维开发指南46

in #devops7 years ago

目前进度

第6章的内容比较长,所以拆分成了若干个小节说明,以下为当前进度:

确保功能测试之间相互隔离
解决页面刷新延迟
使用TDD 实现新设计
逐步迭代,实现新设计
使用Django测试客户端一起测试视图、模板和URL
用于添加待办事项的URL和视图
调整模型
每个列表都应该有自己的URL
还需要一个视图,把待办事项加入现有清单

http://www.iamyann.com/images/0724/20180724182726.png
(html comment removed: more)

内容介绍

  • 把代办事项加入现有清单
  • 先写测试项
  • 检查正则表达试
  • 更新正则表达式
  • 最后的新路由
  • 再次更新视图
  • 测试修改成果
  • 按照设计调整new_list视图
  • 配置重定向
  • 配置试图提交

把代办事项加入现有清单

给新增事项用的视图

先写测试项

vi lists/tests.py

http://www.iamyann.com/images/0724/20180724172514.png

测试能否保存内容并跳转到新页面

检查正则表达试

测试一下,应该会有404出现

python manage.py test lists
#
AssertionError: 301 != 302 : Response didn t redirect as expected: Response
code was 301 (expected 302)

还没有设置URL,应该是404,为什么会301呢
查看一下URL的配置

vi superlists/urls.py
url(r'^lists/(.+)/$', views.view_list, name='view_list'),

正则表达式的范围太大了

更新正则表达式

把URL传入视图

vi superlists/urls.py

http://www.iamyann.com/images/0724/20180724173337.png

更新正则表达式,只匹配数字

继续测试

python manage.py test lists
#
AssertionError: 404 != 302 : Response didn t redirect as expected: Response
code was 404 (expected 302)

符合期望值,测试成功

最后的新路由

定义新路由用于新增项目

vi superlists/urls.py

http://www.iamyann.com/images/0724/20180724173856.png

再次更新视图

再次测试, 报错有了变化

python manage.py test lists
#
AttributeError: module 'lists.views' has no attribute 'add_item'

添加视图

vi lists/views.py
def add_item(request):
    pass

报错

python manage.py test lists
#
TypeError: add_item() takes 1 positional argument but 2 were given

测试修改成果

再测试一下

vi lists/views.py
def add_item(request, list_id):
    pass

报错

python manage.py test lists
#
ValueError: The view lists.views.add_item didn t return an HttpResponse object.

按照设计调整new_list视图

修改测试

def add_item(request, list_id):
    pass

报错

python manage.py test lists
#
self.assertEqual(Item.objects.count(), 1)
AssertionError: 0 != 1

配置重定向

vi lists/views.py

重定向到有效地址

http://www.iamyann.com/images/0724/20180724181154.png

配置试图提交

再次测试

python manage.py test lists
#
self.assertEqual(Item.objects.count(), 1)
AssertionError: 0 != 1
vi lists/views.py

http://www.iamyann.com/images/0724/20180724181757.png

补充上提交语句,测试通过

预告

今天的内容也差不多了,下次会再调整一下视图文件,敬请期待

时间过的飞快,下节再见

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