diff --git a/bookmarks_2021_9_15.html b/bookmarks_2021_9_15.html new file mode 100644 index 0000000..e2bec29 --- /dev/null +++ b/bookmarks_2021_9_15.html @@ -0,0 +1,144 @@ + + + +Bookmarks +

Bookmarks

+

+

书签栏

+

+

百度一下,你就知道 +
CSDN - 专业开发者社区 +

工作

+

+

Gitlink

+

+

ForgePlus后台管理 +
TrustieForgeTest +
TrustieForge +
内网forge +

+

红山开源

+

+

公告测试环境 +
公告后台测试环境 +
红山开源社区 +
创客 +

+

数字园区

+

+

数字园区管理系统 +

+

其他

+

+

阿里邮箱企业版 +
ProcessOn - 我的文件 +
腾讯文档 +
蓝湖 +
iLovePDF | 为PDF爱好者提供的PDF文件在线处理工具 +
企业云邮箱POP\SMTP\IMAP地址和端口信息 - 企业邮箱 - 阿里云 +
工作台 [Jenkins] +
项目 - 先进院 +
Your Authtoken - ngrok +
幕布 +
Gitea +
我的工作台 - Gitee.com +

+

+

学习

+

+

npm : 无法加载文件 D:\Program Files\nodejs\node_global\npm.ps1,因为在此系统上禁止运行脚本。_Alex-CSDN博客 +
Api Root – Django REST framework +
组件 | Element +
Vue.js +
MySQL 连接出现 Authentication plugin 'caching_sha2_password' cannot be loaded - 漠里 - 博客园 +
测试平台接口文档 +
介绍 | vue-element-admin +
lin-xin/vue-manage-system at V4.2.0 +
分享三个开源软件:BlueSpice、XWiki 和 DokuWiki 了解一下_IT专家网 +
Ledge:这可能是距今最好的『DevOps + 研发效能』知识平台_工具 +
KANO 模型_百度百科 +
什么是卡诺KANO模型? - 知乎 +
(1条消息) 利用 Webhooks 实现代码的自动拉取_潜心做事的博客-CSDN博客 +
面试必问的性能测试流程,你真的会吗? +
Jmeter常用的两大性能测试场景 - 小公瑾 - 博客园 +
面试小结汇总 +
AB压力测试工具 - 简书 +
(24条消息) ab压力测试_咦呀的博客-CSDN博客_ab压力测试 +
性能测试工具一之ab(一)_天下任我行-CSDN博客_ab性能测试工具 +
Git创建tag标签命令_Blossom-CSDN博客_git 创建tag +
虚拟机 - Microsoft Edge Developer +
ngrok的使用(超详细)_流年轻逝-CSDN博客_ngrok +
跳槽?面试软件测试需要掌握的7个技能Get了吗? +
何隆昌git命令清除账号密码_何隆昌的博客-CSDN博客 +
git清除本地账户_big_sea_m的博客-CSDN博客 +
Git 多账号切换 (Windows10系统操作) - 崽_崽 - 博客园 +
Python模块学习 - Paramiko - 一只小小的寄居蟹 - 博客园 +
Python模块学习 - Paramiko - Dahlhin - 博客园 +
Python自动化运维 - paramiko模块介绍及使用 - 知乎 +
(2条消息) phpMyAdmin使用教程_叶落无痕的博客-CSDN博客_phpmyadmin使用教程 +
python用socket实现客户端在linux服务器上执行命令_weixin_34261415的博客-CSDN博客 +
centos7中安装python3 - 修瑾 - 博客园 +
面试必备:接口自动化测试精选面试干货 +
python生成requirements.txt的两种方法_Darlewo-CSDN博客 +
Python 自动生成文件夹目录结构_光明磊学习&积累的地方-CSDN博客_python 生成文件夹目录 +
git clone出现 fatal: unable to access 'https://github.com/...'的解决办法(亲测有效)_Dashi_Lu的博客-CSDN博客 +
centos7.9使用rpm安装Jenkins_亲测成功---持续集成部署Jenkins工作笔记0022_全栈哥的专栏-CSDN博客 +
月薪40K+银行测试经理,自动化测试实践经验分享 +
git clone in Haskell from the bottom up +
Linux上使用 selenium + chrome 实现无界面的自动化测试_西门一刀的博客-CSDN博客 +
Google Chrome 64bit Linux版 / chrome64linux稳定版_chrome浏览器,chrome插件,谷歌浏览器下载,谈笑有鸿儒 +
Python中子类调用父类构造函数_笑一个吧-CSDN博客_python调用父类构造函数 +
Linux下安装pipenv_Peter的脱发日记-CSDN博客_linux pipenv +
【python】linux环境下调用webdriver(各种问题解决办法汇总)_summer-CSDN博客 +
新标签页 +
#pytest +
Python库——Faker - 知乎 +
基于Pytest框架的自动化测试开发实践(万字长文入门篇) +
(推荐)linux用一键安装包 - 禅道开源版使用帮助 - 禅道开源项目管理软件 +
Fiddler设置断点 +
Gatling性能测试 - 简书 +
如何在Ubuntu上使用微信客户端 | 《Linux就该这么学》 +
在Ubuntu 18.04LTS 上使用Wine 安装微信及相应问题的解决方法 - 知乎 +

+

class

+

+

百度网盘 请输入提取码 +
课堂派-简单好用的互动课堂管理工具 +
百度网盘 请输入提取码 +
可优 +
axios +
Django 文档 | Django 文档 | Django +
Django documentation | Django documentation | Django +
腾讯课堂_职业培训、考试提升在线教育平台 +
QuerySet API reference | Django documentation | Django +
API 参考 | Vue Router +
GitHub +
HttpRunner V2.x 中文使用文档 +
AI 软件测试工具 Mabl 介绍 - 知乎 +

+

Tools

+

+

HTMLTestRunner · PyPI +
五、数据驱动的使用 - unittestreport 使用文档 +
unittestreport · PyPI +
pytest-testreport · PyPI +
免费logo设计生成_公司logo设计在线制作神器 - 标智客 +
包图网_专注原创商用设计图片下载,会员免费设计素材模板独家图库 +

+

湖大

+

+

2021年硕士研究生考试大纲-湖南大学研究生院 +
湖南大学2018年硕士研究生招生考试考生进入复试的初试成绩基本要求-湖南大学研究生院 +
信息科学与工程学院2019年硕士研究生复试工作实施细则-湖南大学研究生院 +
信科院硕士研究生入学复试机考测试大纲-湖大信息科学与工程学院 +
湖南大学2020年硕士研究生招生学科、专业目录-湖南大学研究生院 +
CCF CSP认证 +

+

教程

+

+

ubuntu下通过wine安装windows软件(以微信和Adobe Acrobat Pro为例) - 知乎 +

+

+

diff --git a/views copy3.py b/views copy3.py new file mode 100644 index 0000000..f0dbe60 --- /dev/null +++ b/views copy3.py @@ -0,0 +1,147 @@ +import json + +from django.http import HttpResponse, JsonResponse, Http404 +from django.shortcuts import render +from django.views import View +from .models import ProjectsInfo +from . import serializers +from rest_framework.views import APIView + +class Projects(View): + + def parse(self, request): + content_type = request.headers.get("Content-Type") + if content_type == "application/json": + try: + return json.loads(request.body) + except Exception as e: + result = {"message": f"{e}", "code": "0"} + return JsonResponse(result, status=400, safe=False, + json_dumps_params={"ensure_ascii": False}) + elif content_type == "application/x-www-form-urlencoded": + return request.POST + else: + pass + + def get(self, request): + """1.需要能获取到项目的列数数据(获取所有数据) + url: /projects/ method:GET response data: json""" + # 从数据库读取所有的项目数据(QuerySet对象) + qs = ProjectsInfo.objects.all() + + # 序列化输出 + # 注意:查询集中涉及到多条数据要用many=true,会返回一个列表 + serializer = serializers.ProjectModelSerializer(instance=qs, many=True) + return JsonResponse(serializer.data, safe=False, status=200, json_dumps_params={"ensure_ascii": False}) + + def post(self, request): + """3.能够创建项目(创建一个项目) + url: /projects/ method:POST request data: json response data: json""" + """ + Content-Type=application/json + 请求体参数: + {"name": "项目名称,必填,唯一", + "leader": "负责人,必填", + "is_execute": "是否执行, 非必填", + "desc": "描述,非必填"} + """ + + try: + serializer = serializers.ProjectModelSerializer(data=self.parse(request)) + serializer.is_valid(raise_exception=True) + # 这里添加token与在序列化器类种添加token一致 + # serializer.validated_data["token"] = "validate token" # 使用这个不能调用serializer.save() + serializer.save() + except Exception as e: + result = {"message": f"{e}", "code": "0"} + return JsonResponse(result, status=400, safe=False, + json_dumps_params={"ensure_ascii": False}) + res = serializer.validated_data + return JsonResponse(res, safe=False, status=200, + json_dumps_params={"ensure_ascii": False}) + + +class ProjectsPK(View): + primary_key_name = "pk" + + def get_object(self): + try: + # return ProjectsInfo.objects.get(id=pk) + # return ProjectsInfo.objects.get(**self.kwargs) + pk = self.kwargs.get(self.primary_key_name) + return ProjectsInfo.objects.get(pk=pk) + except Exception: + raise Http404 + + def get(self, request, pk): + """ 2.需要能获取到项目的详情数据(获取前端指定某一条数据) + url: /projects// method:GET response data: json""" + obj = self.get_object() + serializer = serializers.ProjectModelSerializer(instance=obj) + return JsonResponse(serializer.data, safe=False, status=200, json_dumps_params={"ensure_ascii": False}) + + def put(self, request, pk): + """ 4.能够更新项目(只更新某一个项目) + url: /projects// method:PUT request data: json response data: json""" + # 从前端获取待更新的项目数据 + try: + python_dict = json.loads(request.body) + obj = self.get_object() + serializer = serializers.ProjectModelSerializer(instance=obj, + data=python_dict) + serializer.is_valid(raise_exception=True) + serializer.save() + except Exception as e: + result = {"message": f"{e}", "code": "0"} + return JsonResponse(result, status=400, safe=False, + json_dumps_params={"ensure_ascii": False}) + return JsonResponse(serializer.data, status=200, safe=False, + json_dumps_params={"ensure_ascii": False}) + + def delete(self, request, pk): + """ 5.能够删除项目(只删除某一个项目) + url: /projects// method:DELETE""" + obj = self.get_object() + # 项目模型对象调用delete方法 + obj.delete() + # 返回空给前端 + return JsonResponse(None, status=204, safe=False, json_dumps_params={"ensure_ascii": False}) + + +""" +反序列化输入过程 + 将前端传递的参数(json参数,www-form参数)转换为python常用数据类型(字典,列表嵌套字典) + +数据库校验过程 + + +数据库操作过程(创建,更新操作,读取操作,删除) + +序列化输出过程 + 将python常见的数据类型或者模型类转换为前端能正常解析的json/xml字符串 + + +5个接口分别涉及的过程 + 获取所有的项目数据:数据库操作过程,序列化输出过程 + 创建项目:反序列化输入过程,数据校验过程,数据库操作过程,序列化输出过程 + 获取单个项目数据:数据库操作过程,序列化输出过程 + 更新项目:反序列化输入过程,数据校验过程,数据库操作过程,序列化输出过程 + 删除项目:数据库操作过程 + +当前设计的5个接口,有哪些痛点 + 代码冗余非常严重,不够简洁 + 数据校验极为麻烦,可读性差,复用性更差 + 代码没有统一的规范,维护性差 + 序列化输出的过程没有差异性 + 在获取所有项目的接口中,有很多功能缺失: + 没有提供分页功能 + 没有提供过滤功能 + 没有提供排序功能 + + 整个项目,也有功能缺失 + 没有提供认证授权功能 + 没有提供限流功能(反爬虫) + 5个接口不能放在同一个类视图中定义 + 传递参数的方式单一,不支持www-form表单参数 + +"""