【Django】Django项目结构与单元测试
学校的软工项目要开发一个网站,自然的想到用python+Django来做。由于之前没有用Django开发过大型的网站项目,所以遇到了一些问题。记录在此,便于以后查阅。
今天完成了项目结构的设计、部分的单元测试以及把代码使用策略模式重构。
项目结构
使用app完成功能
首先要明确网站基本的功能实现是要用各种各样的app来实现的,我觉得这样的优点有几点:
功能划分明确,之后修改方便。
因为有多个models,所以可以针对不同的功能设计数据库,也是为了功能逻辑之间的划分。
多个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项目结构与单元测试的更多相关文章
- django开发个人简易Blog——构建项目结构
开发之前第一步,就是构造整个的项目结构.这就好比作一幅画,第一步就是描绘轮廓,有了轮廓,剩下的就是慢慢的填充细节.项目结构规划如下图: 项目结构描述: 本项目以fengzhengBlog为根目录. a ...
- Django官方为什么没有标准项目结构
Django官方并没有提供标准的项目结构,于是网上众说纷纭,百花齐放,一千个读者有一千个哈姆雷特.那我们该怎么设计项目结构呢?在回答这个问题之前,先了解一下Django原生的目录和文件都是干嘛的. p ...
- 1.-Django项目结构
一.Django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MTV的框架模式,即模型M,视图V和模版T. Django基本组件: 1.基本配置文件/路由系统 2. ...
- Django工程目录结构优化
1.我看到这篇文章,写的不错,在此复制了一份,防止以后找不到! 感谢作者的翻译--->原文的链接:http://www.loonapp.com/blog/11/ 如果原文存在,请打开原文件阅读 ...
- django创建项目
django创建项目 安装django pip install django==1.9 Note: C:\Python34\Scripts\pip.exe 创建项目 django-admin star ...
- Django 创建项目流程
django 项目创建流程 1 创建项目 cmd django-admin startproject 项目名称 pycharm file -- new project -- Django -- 项目名 ...
- Django商城项目笔记No.6用户部分-注册接口-短信验证码实现celery异步
Django商城项目笔记No.4用户部分-注册接口-短信验证码实现celery异步 接上一篇,如何解决前后端请求跨域问题? 首先想一下,为什么图片验证码请求的也是后端的api.meiduo.site: ...
- Django入门项目实践(上)
项目结构 1.建立项目 File -->> New Project... 第一个Location是项目所在的目录,第二个Location是项目独立的Python运行环境,我们称之为Virt ...
- django 初始化项目 和modelviewset 使用
django初始化项目 1.初始化项目结构└─shiyanlou_project │ .gitignore│ README.en.md # 英文│ README.md # 中文项目简介│├─celer ...
随机推荐
- Django:信号的使用
信号 Django中提供了"信号调度",用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 应用:比如插入数据到数据库,插入之前写日 ...
- poll_wait阻塞/唤醒
1. 应用阻塞 应用程序使用 select() 或 poll() 调用设备驱动程序的 poll() 函数,该函数把输入输出复用处理的等待队列追加到由内核管理的进程的 poll_table()上 #in ...
- POSIX多线程
全文共分四部分: POSIX多线程—概述 POSIX多线程—异步编程举例 POSIX多线程—线程基本概念 POSIX多线程—互斥量概述 POSIX多线程—概述 Content 1. ...
- Java JAR包
JAR文件全称 Java Archive File,意为Java档案文件.JAR文件是一种压缩文件,也被成为JAR包. 运行程序时,JVM会自动在内存中解压要用的JAR包. 使用JAR包的优点:1.安 ...
- js 高阶函数之柯里化
博客地址:https://ainyi.com/74 定义 在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且 ...
- [LeetCode] 78. 子集 ☆☆☆(回溯)
描述 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3]输出:[ [3], [1], [2] ...
- sql server快捷键添加
工具--选项--键盘 sp_table_column_info p_helpindex sp_sql
- Centos7搭建DockerRegistry
1. 说明 以下使用系统centos7,64位,镜像为CentOS-7-x86_64-Minimal-1804,均已root用户进行操作 2. 安装Registry Docker Registry 是 ...
- redis基本操作使用
连接redis [root@master src]# redis-cli 127.0.0.1:6379> ping PONG 127.0.0.1:6379> set name root O ...
- js eval()
1.基本字符串(数组字符串,json字符串)类型转化为对象(对象数组,json对象): eval("("+字符串+")"); 2.json字符串转化为json ...