使用一个简单的get函数返回需要的内容
statistics = { 'projects_count': projects_count, 'interfaces_count': interfaces_count, 'testcases_count': testcases_count, 'testsuits_count': testsuits_count, 'configures_count': configures_count, 'envs_count': envs_count, 'debug_talks_count': debug_talks_count, 'reports_count': reports_count, 'success_rate': success_rate, 'fail_rate': fail_rate,}
他们都是从数据库中计算并统计出来的
需要有权限才能访问
permission_classes = [permissions.IsAuthenticated]
代码:
from rest_framework.views import APIViewfrom rest_framework.response import Responsefrom rest_framework import permissionsfrom django.db.models import Sumfrom projects.models import Projectsfrom interfaces.models import Interfacesfrom testcases.models import Testcasesfrom testsuits.models import Testsuitsfrom configures.models import Configuresfrom envs.models import Envsfrom debugtalks.models import DebugTalksfrom reports.models import Reportsclass SummaryAPIView(APIView): """ 返回统计信息 """ permission_classes = [permissions.IsAuthenticated] def get(self, request): """ 获取统计信息 """ user = request.user user_info = { 'username': user.username, 'role': '管理员' if user.is_superuser else '普通用户', 'date_joined': user.date_joined.strftime('%Y-%m-%d %H:%M:%S') if user.date_joined else '', 'last_login': user.last_login.strftime('%Y-%m-%d %H:%M:%S') if user.last_login else '', } projects_count = Projects.objects.filter(is_delete=False).count() interfaces_count = Interfaces.objects.filter(is_delete=False).count() testcases_count = Testcases.objects.filter(is_delete=False).count() testsuits_count = Testsuits.objects.filter(is_delete=False).count() configures_count = Configures.objects.filter(is_delete=False).count() envs_count = Envs.objects.filter(is_delete=False).count() debug_talks_count = DebugTalks.objects.filter(is_delete=False).count() reports_count = Reports.objects.filter(is_delete=False).count() run_testcases_success_count = Reports.objects.filter(is_delete=False).aggregate(Sum('success'))[ 'success__sum'] or 0 run_testcases_total_count = Reports.objects.filter(is_delete=False).aggregate(Sum('count'))['count__sum'] or 0 if run_testcases_total_count: success_rate = int((run_testcases_success_count / run_testcases_total_count) * 100) fail_rate = 100 - success_rate else: success_rate = 0 fail_rate = 0 statistics = { 'projects_count': projects_count, 'interfaces_count': interfaces_count, 'testcases_count': testcases_count, 'testsuits_count': testsuits_count, 'configures_count': configures_count, 'envs_count': envs_count, 'debug_talks_count': debug_talks_count, 'reports_count': reports_count, 'success_rate': success_rate, 'fail_rate': fail_rate, } return Response(data={ 'user': user_info, 'statistics': statistics })
由于还没有学习 docker
暂时不继续,先行学习 docker
cmd.exe命令提示字符
获取一个区间,第10~13行
$ head -n13 xxx | tail -n4
-d:指定分割符 -f:指定列
Name Age Scorea 25 90b 26 91c 27 92d 28 93
$ cut -d" " -f1 learn_cut.txt
-d:仅打印有重复的元素 -c:打印元素重复的个数
默认以字符串的ASCII码数值从小到大排序 -n:以数值大小排序 -r:倒序 -t:指定分割符,默认为空格 -knum:指定以某个字段来排序
# 以:分割的第三列的数值大小排列$ sort -t":" -k3 -n /etc/passwd
-l:打印行数 -w:打印单词数 -c:打印字节数 -L:打印最长行的字节数
等号前后不能有空格
$ username="89"$ username=a b # 错误$ username="a b" #正确
不能插值
$ p=python$ u='I love $p'$ echo $u$ i="I love $p"$ echo $i
将命令的结果返回给变量
$ o=$(ls)$ p=`ls`
$ env
$ echo $USER
在 ~/.bashrc
中创建才是真正的全局变量
$0
:获取当前执行的shell脚本文件名,包括脚本路径$n
:当前shell脚本的第n个参数(n>9需要使用 ${10}
)$#
:获取当前shell命令行中参数的总个数$?
:获取执行的上一个命令的返回值(0为成功,非0为失败)#!/bin/bashecho "参数的总个数:$#"echo "脚本名为:$0"echo "第二个参数:$2"echo "第十个参数:${10}"echo "获取所有参数:$*"