Django2.0学习笔记

通用views、编写自动化测试、static文件路径的读取

通用views:from django.views import generic 

在generic的文件中有着许多通用的views类

__all__ = [
    'View', 'TemplateView', 'RedirectView', 'ArchiveIndexView',
    'YearArchiveView', 'MonthArchiveView', 'WeekArchiveView', 'DayArchiveView',
    'TodayArchiveView', 'DateDetailView', 'DetailView', 'FormView',
    'CreateView', 'UpdateView', 'DeleteView', 'ListView', 'GenericViewError',

]

关于内置的通用类视图api列表详解

自动化测试:自动化测试的不同之处在于测试工作是由系统为您完成的。 您只需创建一组测试,然后在对应用程序进行更改时,可以检查代码是否仍按原计划运行,而无需执行耗时的手动测试。

编写测试脚本时的三大习惯:

    保证你的每一个模型和每一个视图都有单独的TestCase

    针对你不同的条件编写测试方法

    描述对应的测试方法的功能

那么如何编写Django的自动化测试的脚本呢?

Django2.0学习笔记

上图是django文档中的示例,编写的自动化测试脚本应该满足以下条件:

    1.必须继承django.test.TestCase,是属于它的子类,在你执行测试脚本的时候,django会去寻找属于TestCase子类的对象

    2.测试的方法都必须以‘’test‘’开头,找到子类后就会寻找对应的前缀带test字样的方法

    3.在方法内编写你的测试逻辑即可

    4.最后用命令启动自动化测试脚本 python manage.py test app_name

self.assertIs :更多有关于TestCase的方法工具

对视图函数(view)编写自动化测试脚本:

from django.test.utils import setup_test_environment

setup_test_environment() <=  该操作仅限于使用shell的环境测试你的app,如果是在test.py中编写的自动化脚本就不需要加载该环境

Django2.0学习笔记

遇到该问题是就是你没有执行setup_test_environment() 

可以通过from django.client import Client 创建一个客户端,模拟是一个浏览器用户

client = Client() 实例化对象后,可以通过不同的请求方式,向你的url发出请求,观察HttpResponse的状态和属性

Django2.0学习笔记

static文件路径的读取

static文件的查询是通过 setttings.py/STATICFILES_FINDERS 这个变量内的两个查找类实现的 

from django.contrib.staticfiles.finders import FileSystemFinder,AppDirectoriesFinder

一个是FileSystemFinder ,另一个是AppDirectoriesFinder

FileSystemFinder:通过FileSystemFinder会去settings.py/STATICFILES_DIRS指向的路径下寻找static文件,如果没有找到匹配的,那么就使用AppDirectoriesFinder去setting.py/INSTALL_APPS 变量下的app对应的子目录下查找static文件,一旦匹配到就停止查询

反转static路径:在模板中常需要将静态文件的路径动态的反转成相应的文件路径,Django模板中提供了一个static 标签用来反转

首先在模板中加载{% load static %}    

使用时{% static 文件的相对路径 %} 那么文件的相对路径是相对哪个文件呢?它相对的是在settings.py中的STATIC_URL这个变量,所以完整的路径反转后的url会是 'STATIC_URL + 文件的相对路径'

在网站上应用staticfile

staticfile的引用

如何在真实的服务器环境上部署静态文件