使用Django 测试客户端一起测试视图,模板和URL

使用Django 测试客户端一起测试视图,模板和URL

大家好,又见面了,我是你们的朋友全栈君。

Django 测试客户端

 self.client.get(url)  测试客户端是Django中TestCase类的一个属性名.

 

至此已经在网站中可以创建一个清单了。

那么,现在是可以在unit test中测试新建的清单了

为新建清单添加了一个视图函数,并映射给了url ‘^/Lists/new$’. 在哪里使用它呢? 在首页的新建清单 form的Action中指定这个url。

目前的实现是:

 1. get 首页,打开首页。能看到 输入待办事项的清单。

 2. post 首页,可以创建一个list.并在list中显示该待办事项。打开的是新建list的 url

 3. post list 页面。能看到新建的待办事项

目前的问题是:

 1. 目前只能有一个list

 2. 一个list中显示所有的待办事项,不能隔离。

解决问题:

  处理隔离问题,必须修改模型,新建一个 List 类。并让类和item 关联起来. 需要用到 model的知识。

  List是单独的自己: 在url中使用正则式,加入一个捕获组 (.+) ,捕获到的文本会作为参输传入视图

  Item 每个Item应该存在某个List中。

 

  捕获组  (.+)不仅可以捕获 /(.+)/ 也可以捕获 /((.+)/new_item ….. 所以 写url时,要避免使用的正则式,匹配太广.

 

response = self.client.get(‘/Lists/%id/’ % (correct_list.id,))

  self.assertEqual(response.context[‘list’],correct_list)  # response.context 表示要传入render函数的上下文。 Django客户端把上下文附在response对象上,方便测试.

template 中:

{% for new_item_text in list.item_set.all %}  # .item_set 叫做反向查询。是Django提供的非常有用的ORM功能。可以在其他表中查询某个对象的相关纪录。

所以在template的from中。可以传入一个modle实例。然后根据这个实例找相关的其他对象实例:

   <form method=”POST” action=’/Lists/{
{
list.id}}/new’>
            <input name=”item_text” id=”id_new_item” placeholder=”Enter a to-do item” />
            {% csrf_token %}
        </form>
        <table id=”id_list_table”>
            {% for new_item_text in list.item_set.all %}
                <tr><td>{
{ forloop.counter}}: {
{new_item_text.text}}</td></tr>
            {% endfor %}
        </table>

转载于:https://www.cnblogs.com/ahMay/p/8721068.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107597.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mysql、Java、mabatis的字段映射

    mysql、Java、mabatis的字段映射mysql、Java、mabatis的字段映射

    2022年4月23日
    64
  • 免费编程学习资源

    免费编程学习资源web项目 1.链接:https://pan.baidu.com/s/1qZcykm4密码:c5va 2.链接:https://pan.baidu.com/s/1i64wMNV密码:jv34 3.链接:https://pan.baidu.com/s/1o9dinNG密码:rqu8 4.链接:https://pan.baidu.com/s/…

    2022年5月21日
    79
  • MIPI协议简介

    MIPI协议简介MIPI协议简介 介绍 MIPI联盟定义了一套接口标准,把移动设备内部的接口如摄像头、显示屏、基带、射频接口等标准化,从而增加设计灵活性,同时降低成本、设计复杂度、功耗和EMI。未来的产品都将朝着移动的方向发展,例如智能手机、数码相机、摄像机、平板电脑、媒体播放器、游戏机等,这些产品需要能执行多任务,包括处理多个不同的传感器如麦克风、图像传感器、磁罗盘、三轴加速度计和精细的触摸屏…

    2022年4月28日
    60
  • Python小白的数学建模课-04.整数规划「建议收藏」

    Python小白的数学建模课-04.整数规划「建议收藏」整数规划与线性规划的差别只是变量的整数约束。问题区别一点点,难度相差千万里。选择简单通用的编程方案,让求解器去处理吧。『Python小白的数学建模课@Youcans』带你从数模小白成为国赛达人。1.从线性规划到整数规划1.1为什么会有整数规划?线性规划问题的最优解可能是分数或小数。整数规划是指变量的取值只能是整数的规划。这在实际问题中很常见,例如车间人数、设备台数、行驶次数,这些变量显然必须取整数解。整数规划并不一定是线性规划问题的变量取整限制,对于二次规划、非线性规划问题也有.

    2022年7月12日
    21
  • Java 初中级程序员如何快速成长?

    Java 初中级程序员如何快速成长?入职后如何快速成长到CTO入职后三个月试用期要做的事三法宝,处理同事关系核心两点,处理好领导关系每件事都是学习的机会主动加班,试用期加班是学习的好机会未通过试用期,如何应对?前三年需要学的技术工作后,千万不要停止学习项目经验如何累积?JAVA高级技术还需要学习哪些?架构师课程如何学习?工作中,快速学习新技术的捷径(重要的是形成体系,而不是钻到某个技术点)…

    2022年6月9日
    23
  • 获取32位模块_uuid多少位

    获取32位模块_uuid多少位UUID.randomUUID().toString().replace("-","");

    2022年8月9日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号