如何检测视图是否在测试环境中被调用(例如,从manage.py test开始)?

#pseudo_code
def my_view(request):
    if not request.is_secure() and not TEST_ENVIRONMENT:
        return HttpResponseForbidden()

推荐答案

将此代码放入settings.py:

import sys

TESTING = len(sys.argv) > 1 and sys.argv[1] == 'test'

这将测试第二个命令行参数(在./manage.py之后)是否为test.然后,您可以从其他模块访问此变量,如下所示:

from django.conf import settings

if settings.TESTING:
    ...

这样做有很好的理由:假设您正在访问一些后端服务,而不是Django的模型和数据库连接.然后,您可能需要知道何时调用生产服务和测试服务.

Django相关问答推荐

测试DRF中需要授权头

如何从基于类的视图将用户保存在 django 模型中

在不指定查找的情况下调用 prefetch_lated() 有用吗?

访问默认的 django-allauth 登录和注册页面时出现 TemplateSyntaxError

Django 关系嵌套related_name

Django 仅预取相关模型的最新对象

Django REST Framework如何在序列化程序中引发验证错误时指定错误代码

如何获得用户权限?

是否有 django 模板过滤器来显示百分比?

Django REST Framework ModelSerializer get_or_create 功能

Django:通过manage.py使用服务器和gunicorn等其他服务器之间的区别.哪个更好?

在 django 中获取本地时区

在 Django 管理员中嵌套内联?

Django ORM 能否以可靠的与后端无关的方式存储无符号 64 位整数(又名 ulong64 或 uint64)?

Django:何时使用 QuerySet 无

django python 日期时间设置为午夜

Django REST Framework - 序列化可选字段

如何在 django 中使用更少的 css?

Django:按位置排序,忽略 NULL

从 git 存储库中删除并忽略所有具有扩展名的文件