读后笔记 -- Python 全栈测试开发 Chapter10:接口的设计与开发
10.1 Django 框架
1. 几个主流的框架:
- 1)适合初学者的接口框架:Django,Flask
- 2)针对底层定义:Twisted
- 3)实现高并发:Tornado
2. install
// 使用python 下的 pip
pip stall django
3. 创建 Django 项目
4. 启动 Django 服务(命令行)
// 在 Django project 的 manage.py 目录下,运行
python manage.py runserver // 访问 http://127.0.0.1:8000/,提示 successful 就表示服务启动成功 // 指定端口启动 。注意:不能使用 1)已被占用端口;2)浏览器认为不安全的端口(如 chrome 认为的 6666,不同浏览器限制不同)
python manage.py runserver 127.0.0.1:30060
4.1 指定 IP 及 端口,可以让其他人访问
python manage.py runserver 192.168.1.6:30060
浏览器访问时 http://192.168.1.6:30060/
=> 依据提示,修改 提示目录下的 request.py,将 IP 地址添加到 allowed_hosts 中,完成后,再次刷新,就可以正常访问了。
5. 服务启动(pycharm 运行 manage.py)
1)pycharm 右键 manage.py,run manage.py,会提示 “Type 'manage.py help <subcommand>' for help on a specific subcommand.”
2)点击右边的 manage -> Edit Configuation -> 修改 Parameters,新增 “runserver 192.168.1.6:30060” -> 回到 manage.py,再右键 run manage,这次可以正常启动了
6. Django 项目文件
- wsgi.py:web 服务,支持 HTTP 协议,但不支持 WebSocket 协议
- asgi.py:web 服务,支持 HTTP + WebSocket 协议,还支持 Web 开发中的一些新标准,是 WSGI 的一种扩展
- settings.py:配置文件,包括 数据库设置、网页语言、环境配置、安全配置、参数配置等
- urls.py:url 路由,可实现 Web 中 url 路径访问的映射操作
- manage.py:django 服务运行及管理的命令管理集合的管理工具。可以与 Django 项目交换,可看作项目的 djiango-admin.py(Python39\Scripts\ 下) 版本,实际上,两者共有相同的后台代码
- db.sqllite3:数据库文件,以文件形式存储的数据格式
10.2 MVT 框架
1. django 分层原理:
1)传统的三层架构:UIL 表示层(数据的传递和显示操作)、BLL 业务逻辑层(业务逻辑处理)、DAL 数据访问层(数据信息存储及提取) ->
2)MVC 三层架构:Model 模型(对数据库层的访问进行封装)、View 视图(将结果封装成页面展示给用户)、Controller 控制(实现接受请求,完成请求的业务逻辑处理)
Spring MVC 基本架构:https://www.cnblogs.com/bruce-he/p/13081494.html
3)Django 的MVT 分层模式(model view template)模块模型视图层;主要是基于 MVC 三层架构而来
- M:负责与数据库交互,对应 MVC\M
- V:接受请求、业务进行处理并进行响应,对应 MVC\C
- T:构建 HTML,CSS,JS 等,对应 MVC\V
2. Django
1)View 视图层:有两种表现形式:
- FBV (Function Base View) 函数视图:
- 声明一个函数,其第一个参数必须是 request,即获取当前的请求对象即 httpRequest
- CBV (Class Base View) 类视图
- 声明一个类,该类必须继承 View 对象;在 url 映射的时候,一定要调用 as_view() 方法,且该类中声明的处理方法即是请求方法(方法名必须是 get, post, put...)
响应的处理形式有:
- 1)数据格式(json)
- 2)html 页面
- 3)重定向到 url(需要在 settings.py 的 TEMPLATES \ DIRS 里面 配置 Templates)
---------- urls.py -----------
from django.contrib import admin
from django.urls import path
from djangoProject.View.Login_Index import Login_Index urlpatterns = [
path('admin/', admin.site.urls),
path("login", Login_Index())
] ----------- Login_Index.py --------------
from django.http import HttpResponse
from django.shortcuts import redirect, render def Login_Index(request):
# 文本响应
# return HttpResponse("Hello World.")
# 重定向到链接
# return redirect("http://www.baidu.com")
# render to html
return render(request, 'login.html')
如果 Post 请求时,出现 403 时,可将 settings.py 的此项配置注销
Django http request API document: https://docs.djangoproject.com/en/4.1/ref/request-response/
3. json 数据格式:
json 相关连接:https://www.cnblogs.com/bruce-he/p/16942997.html
10.3 接口开发
10.3.1 SQLite 数据库
1. sqlite3:以文件形式进行存储数据的小型实用的数据库。一般以 .db 或 .sqlite 为后缀
2. sqlite 运行
1)如已配置了 android sdk 环境变量则可以直接运行 sqlte3 进入
2)通过 https://sqlite.org/index.html 下载,然后配置到环境变量 PATH 中
========== sqlite 常见命令 ===========
# 进入 sqlite3
> sqlite3 # 创建 database
1)方式一(cmd 窗口):
> sqlite3 my.db
2)方式二(sqlite 内部):
sqlite> open my.db # 查看 database
sqlite> .databases # 创建表
sqlite> create table userInfo( userID int, userName varchar(20), userPwd varchar(20)); # 查看表
sqlite> .table # 插入数据
sqlite> insert into userInfo values(1, "admin", "123456"); # 查询数据
sqlite> select * from userInfo; # 更新数据
sqlite> update userInfo set userPwd = "234567" where userName ="admin"; # 删除数据
sqlite> delete from userInfo where userName = "admin"; # 注意:
1)数据库 或 表等操作 命令前加 “.”
2)增删改查等不需要
读后笔记 -- Python 全栈测试开发 Chapter10:接口的设计与开发的更多相关文章
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- 想成为Python全栈开发工程师必须掌握的技能
什么是Python全栈工程师? 即从前端页面的实现,到后台代码的编写,再到数据库的管理,一人可以搞定一个公司网站的所有事情,真正实现全栈开发. 全栈只是个概念 也分很多种类 真正的全栈工程师涵盖了we ...
- python 全栈开发,Day117(popup,Model类的继承,crm业务开发)
昨日内容回顾 第一部分:权限相关 1. 权限基本流程 用户登录成功后获取权限信息,将[权限和菜单]信息写入到session. 以后用户在来访问,在中间件中进行权限校验. 为了提升用户体验友好度,在后台 ...
- python 全栈开发,Day98(路飞学城背景,django ContentType组件,表结构讲解)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- python 全栈开发,Day43(python全栈11期月考题)
python全栈11期月考题 1.常用字符串格式化有哪些?并说明他们的区别 2.请手写一个单例模式(面试题) 3.利用 python 打印前一天的本地时间,格式为‘2018-01-30’(面试题) 4 ...
随机推荐
- 跳板攻击之: MSF 添加路由方式渗透内网
跳板攻击之: MSF 添加路由方式渗透内网 目录 跳板攻击之: MSF 添加路由方式渗透内网 1 Metasploit 跳板攻击: 添加路由方式原理 2 实验环境 2.1 建立 meterpreter ...
- 05#Web 实战:可拖拽的侧边栏
效果演示图 可拖拽的左.右侧边栏的使用情况还是挺多的,博客园后台管理的左侧边栏就可以拖拽哟!效果演示如下图: HTML 代码 <div class="container"&g ...
- PG数据库运维工具要覆盖哪些能力
目前的国产数据库中,很多产品都是以PG社区版代码作为研发起点的,还有一些产品是基于openGauss开源项目的.这些数据库的基础特性都和社区版的PG数据库类似,不过也做了一定的拓展.不过从使用与运维上 ...
- ASP判断一个字符是否为汉字的两种方法
有的时候我们要求用户一定要输入汉字的信息,比如姓名和地址.那么,如何判断一个字符是不是汉字呢?其实在asp中至少有两种方法: 一.直接将某字符用asc转为ascii码,如果是英文,他应该是0-127的 ...
- bzoj5000+的洛谷题号
前言 闲得没事把 bzoj5000+ 在 Luogu 上可找到的题面整理了一下-- 对于我,bzoj 连账号都没有,所以肯定是不清楚 bzoj 题目总数的--因此其实就是手动翻查. 工作量很大,基本不 ...
- 浏览器tab标签切换触发监听事件visibilitychange
document.addEventListener('visibilitychange', function() { if(document.hidden){ //当页面切换或隐藏时触发的代码,可以用 ...
- Kmeans中文聚类
中文文本kmeans聚类原理:K就是将原始数据分为K类,Means即均值点.K-Means的核心就是将一堆数据聚集为K个簇,每个簇中都有一个中心点称为均值点,簇中所有点到该簇的均值点的距离都较到其他簇 ...
- N63050 第十五周运维作业
第二十九天: 网络文件共享服务 1基于DB数据库文件实现FTP的虚拟用户 2基于MySQL数据库文件实现FTP的虚拟用户 3NFS服务的工作原理 4NFS共享服务实现详解 5实现NFS共享存储的LAM ...
- SAP 后台任务定时job
定时任务的事务码 sm36:创建定时任务 sm37:查看定时任务 JDBG:后台任务debug,在对应的sm37中对应的job页面 t-code输入 创建定时任务SM36 名称可以随便起 一般都是按自 ...
- pytest框架增加log打印(包括pytest的执行结果、自定义的log信息)
前言: 之前同事在跑脚本的时候报错了,发现没法把需要的log信息打印出来,我这边定位问题比较麻烦,所以增加了log的打印.这个问题之前已经处理过了,本来以为是小问题,结果今天又要用到这个小技巧的时候居 ...