学校的软工项目要开发一个网站,自然的想到用python+Django来做。由于之前没有用Django开发过大型的网站项目,所以遇到了一些问题。记录在此,便于以后查阅。

今天完成了项目结构的设计、部分的单元测试以及把代码使用策略模式重构。

项目结构

使用app完成功能

首先要明确网站基本的功能实现是要用各种各样的app来实现的,我觉得这样的优点有几点:

  1. 功能划分明确,之后修改方便。

  2. 因为有多个models,所以可以针对不同的功能设计数据库,也是为了功能逻辑之间的划分。

  3. 多个test可以更有针对性的进行测试

具体的python代码:django-admin startapp <app_name>

app的具体位置

因为之前看过一本16堂课学会Django架站的书,上面的提到将app放到项目文件夹下,我觉得这样不够好,因为会导致app文件夹可能与templates或static文件夹搞混的情况,同样也不是很好看;所以我这次使用了一个apps文件夹存放所有的app。

QuerySet的具体使用

这里记录一下objects的使用,链接

Django单元测试

啊这个也踩了一些坑,不过挺浅的。。。Django的单元测试是基于django.test.TestCase这个类(继承unittest类)实现的。

具体步骤

首先编写测试类,测试类是继承TestCase类的,之后重载setUp方法,做一些测试的准备操作,我测试的是models中的数据表以及操作方法,因此import model中的各种类;然后就是编写测试方法了,我是一个一个个方法测试的,每个方法写几个test case,保证所有的分支都被覆盖。

写好了代码我发现了一个重要的问题,我不知道咋运行QAQ,求助度娘发现要用这个命令:

python manage.py test <module_name>

e.g.
python manage.py test apps.signin.tests

Django会自动地执行相应模块的所有tests。

那么做完unittest自然就想到要得到代码覆盖率,这里使用一个coverage的工具,要自己安装。

代码:(cmd)pip install coverage

图片来自这篇博客

这样就得到了代码覆盖率。

策略模式重构

把用户行为和用户本身剥离开,来避免一些内聚和耦合。由于当前项目很小,重构起来不费什么劲。。。忙活了一晚上,好像也没干啥QAQ

【Django】Django项目结构与单元测试的更多相关文章

  1. django开发个人简易Blog——构建项目结构

    开发之前第一步,就是构造整个的项目结构.这就好比作一幅画,第一步就是描绘轮廓,有了轮廓,剩下的就是慢慢的填充细节.项目结构规划如下图: 项目结构描述: 本项目以fengzhengBlog为根目录. a ...

  2. Django官方为什么没有标准项目结构

    Django官方并没有提供标准的项目结构,于是网上众说纷纭,百花齐放,一千个读者有一千个哈姆雷特.那我们该怎么设计项目结构呢?在回答这个问题之前,先了解一下Django原生的目录和文件都是干嘛的. p ...

  3. 1.-Django项目结构

    一.Django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,视图V和模版T.   Django基本组件: 1.基本配置文件/路由系统 2. ...

  4. Django工程目录结构优化

    1.我看到这篇文章,写的不错,在此复制了一份,防止以后找不到! 感谢作者的翻译--->原文的链接:http://www.loonapp.com/blog/11/ 如果原文存在,请打开原文件阅读 ...

  5. django创建项目

    django创建项目 安装django pip install django==1.9 Note: C:\Python34\Scripts\pip.exe 创建项目 django-admin star ...

  6. Django 创建项目流程

    django 项目创建流程 1 创建项目 cmd django-admin startproject 项目名称 pycharm file -- new project -- Django -- 项目名 ...

  7. Django商城项目笔记No.6用户部分-注册接口-短信验证码实现celery异步

    Django商城项目笔记No.4用户部分-注册接口-短信验证码实现celery异步 接上一篇,如何解决前后端请求跨域问题? 首先想一下,为什么图片验证码请求的也是后端的api.meiduo.site: ...

  8. Django入门项目实践(上)

    项目结构 1.建立项目 File -->> New Project... 第一个Location是项目所在的目录,第二个Location是项目独立的Python运行环境,我们称之为Virt ...

  9. django 初始化项目 和modelviewset 使用

    django初始化项目 1.初始化项目结构└─shiyanlou_project │ .gitignore│ README.en.md # 英文│ README.md # 中文项目简介│├─celer ...

随机推荐

  1. ETC1/DXT1 compressed textures are not supported when publishing to iPhone

    Build application in Unity 2017.20f3 用Unity2017/2018编译iPhone版本出现以下错误: ETC1(or DXT1) compressed textu ...

  2. 使用ABAP绘制可伸缩矢量图

    Jerry去年的文章 动手使用ABAP Channel开发一些小工具,提升日常工作效率 里曾经介绍过一些用ABAP实现的可供娱乐的小程序,比如用古老的HPGL接口在SAPGUI里绘图: 关于如何用SA ...

  3. linux技能点 一

    vmware  workstation:安装时永久性密钥   5A02H-AU243-TZJ49-GTC7K-3C61N  linux技能点:系统管理,网络管理,文件操作,用户管理,文件权限,软件管理 ...

  4. java-ExceptionHandler全局异常处理

    springmvc配置文件: <!-- 定义全局异常处理,只有一个全局异常处理器起作用 --> <bean id="exceptionResolver" clas ...

  5. php exec执行视频图片转换

    首先安装ffmpeg <?php set_time_limit(0) ; $cmd = "ffmpeg -i 'input/3.mp4' -r 1 -q:v 2 -f image2 i ...

  6. 【HCIA Gauss】学习汇总-数据库管理(事务 权限 审计 OBDC JDBC)-6

    事务控制事务提交 commit事务回滚 rollback savepoint 用于事务设置保存点 ----> savepoint s1 / savepoint s2 rollback to sa ...

  7. Python入门篇-面向对象概述

    Python入门篇-面向对象概述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.语言的分类 面向机器 抽象成机器指令,机器容易理解 代表:汇编语言 面向过程 做一件事情,排出个 ...

  8. JVM——垃圾回收资格的判定

    一:判断一个对象是否已死 1:引用数算法:给对象加个引用计数器,被引用时加一,引用失效减一,在任何时刻一直为0的就说明不会被使用,但是由于一种情况的存在,导致这种算法不被JVM所考虑,在两个对象相互引 ...

  9. HDU - 5823:color II (状压DP 反演DP)

    题意:给定连通图,求出连通图的所有子图的颜色数. 一个图的颜色数,指最少的颜色数,给图染色,使得有边相邻的点之间颜色不同. 思路:首先想法是DFS枚举,然后计算颜色,发现对于给定图,求颜色不会求? 毕 ...

  10. 如何打开.ipynb文件

    1,GitHub 中可以直接打开 .ipynb 文件. 2,可以把 .ipynb 文件对应的下载链接复制到 https://nbviewer.jupyter.org/ 中查看.