基于Python Django开发的一个mock
最近研究了一下python的django框架, 发现这个框架不比Java spring boot差, mock同样一个接口, 代码量少很多, 维护起来也很方便, 废话不多说,直接上代码
1. 安装django: pip install django
2. 创建项目: django-admin startproject postdemo
3. 启动项目: python manage.py runserver 0.0.0.0:8001
启动Django项目就这么简单, 三步完成, O(∩_∩)O
postdemo 包下创建views.py
from django.http import HttpResponse from .utils import process_parameters, validate_parameters, read_response def postdemo(request):
if request.method == 'POST':
dic_params = process_parameters(request.body.decode('utf-8')) # 一定要用utf-8解码,不然传入的是bytes类型b'body'
if validate_parameters(dic_params):
result = read_response()
res = HttpResponse(result)
# res.__setitem__("resultcode", '0') # 用这个也OK, __setitem__可以修改默认的header, 比如Content-Type, setdefault不行
res.setdefault('resultcode', '')
res.setdefault('msg', 'no error')
return res
else:
return HttpResponse('error username or password!')
else:
return HttpResponse('error method!')
postdemo 包下创建utils.py, 定义业务逻辑方法, 采用函数式编程也可以
import configparser
import json def read_config():
config = configparser.ConfigParser()
dic = {}
config.read("./config.ini", encoding="utf8")
config.sections()
dic["username"] = config.get("login", "username")
dic["password"] = config.get("login", "password")
return dic def read_response():
config = configparser.ConfigParser()
dic = {}
config.read("./config.ini", encoding="utf8")
config.sections()
dic["nickname"] = config.get("response_data", "nickname")
dic["sex"] = config.get("response_data", "sex")
dic["age"] = config.get("response_data", "age")
dic["status"] = config.getint("response_data", "status")
dic["uid"] = config.get("response_data", "uid")
return json.dumps(dic, ensure_ascii=False) def process_parameters(body):
try:
body_dic = {}
key_values = str(body).split("&")
for key_value in key_values:
body_dic[key_value.split("=")[0]] = key_value.split("=")[1]
return body_dic
except Exception as e:
return e def validate_parameters(body):
if isinstance(body, dict):
dic_config = read_config()
if dic_config["username"] == body["username"] and dic_config["password"] == body["password"]:
return True
else:
return False
postdemo包平级目录创建配置文件config.ini
[login]
username=123456789@qq.com
password=123456 [response_data]
nickname=旦增尼玛
sex=1
age=18
status=1
uid=123456789
默认文件urls.py, 添加path
from django.contrib import admin
from django.urls import path from . import views urlpatterns = [
path('admin/', admin.site.urls),
path('postdemo', views.postdemo),
]
默认文件setting.py, 注释掉中间件的csrf安全验证, 其他默认
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
到这里就完了, 一个简单的post 接口就完成了, 如果还有进行cookie等校验, 完善utils.py业务处理逻辑即可, 启动项目
基于Python Django开发的一个mock的更多相关文章
- 基于Python+Django的Kubernetes集群管理平台
➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...
- Python+django开发环境搭建
Python目前主版本有2个,2.7+和3.4+ 新入手,决定还是从2.7开始 先从python官网https://www.python.org/下载python2.7.10,64位版本(这里注意,选 ...
- pycharm环境下用Python+Django开发web搭建
1.安装pycharm: 2.安装Python: 3.安装mysql: 4.安装Django; pip3 install django 5.创建Django工程命令方式: # 创建Django程序 d ...
- 使用 Visual Studio Code(VSCode)搭建简单的 Python + Django 开发环境
写在前面的话 作为有个 Python 菜逼,之前一直用的 Pycharm,但是在主题这一块怎么调整都感觉要么太骚,看起来不舒服,要么就是简直不能看.似乎用大 JB 公司 IDE 的人似乎都不怎么重视主 ...
- 利用基于Python的Pelican打造一个自己的个人纯静态网站
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_100 其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来 ...
- Python Django开发遇到的坑(版本不匹配)
这个问题 进入django 后台, 添加,修改都不可以,只有删除可以,那么百分之百是这个问题 对照一下,是你的django 版本低了还是 python版本高了,对照的话就没问题了 这个坑,弄了两天啊! ...
- 基于Spring Boot框架开发的一个Mock
背景:在项目后端接口开发还未完成,我们无法进行自动化接口用例的调试,希望与开发同步完成接口自动化用例的编写及调试,待项目转测后,可以直接跑自动化用例,提高测试效率. 选用的maven + Spring ...
- Python Django 开发 4 ORM
第三篇最后写了,光知道那些基础的查询在项目中是没有什么卵用的,重点是实体关系映射(ORM),今天学习了,来记录一下,关键词:ForeignKey(多对一).OneToOneField(一对一).Man ...
- 7-4 python 接口开发(提供mock服务)
1.登录接口开发(数据存在数据库中) 接口开发做mock(模拟功能) tools.py import pymysql def my_db(sql): conn = pymysql.connect(h ...
随机推荐
- Linux 版本svn安装
CentOS6.5离线安装subversion 下载 linux rpm安装包 (我只下载了subversion-1.6.12-1.rhel5.x86_64.rpm),直接安装时会提示缺少依赖,在 r ...
- 第六十六天 js操作高级
1.对象使用的高级 对象的key为字符类型,value为任意类型 var obj ={ name:"name", "person-age":18 } // 访问 ...
- 【XSY3042】石像 拓扑排序 状压DP 洲阁筛
题目大意 有 \(n\) 个整数 \(a_1,a_2,\ldots,a_n\),每个数的范围是 \([1,m]\).还有 \(k\) 个限制,每个限制 \(x_i,y_i\) 表示 \(a_{x_i} ...
- Mysql数据库使用量查询及授权
Mysql数据库使用量查询及授权 使用量查询 查看实例下每个库的大小 select TABLE_SCHEMA, concat(truncate(sum(data_length)/1024/1024,2 ...
- LOJ #2135. 「ZJOI2015」幻想乡战略游戏(点分树)
题意 给你一颗 \(n\) 个点的树,每个点的度数不超过 \(20\) ,有 \(q\) 次修改点权的操作. 需要动态维护带权重心,也就是找到一个点 \(v\) 使得 \(\displaystyle ...
- To the moon HDU - 4348 (主席树,区间修改)
Background To The Moon is a independent game released in November 2011, it is a role-playing adventu ...
- pgsql 并行相关配置
- beego框架的最简单登入演示
一.controllers逻辑代码 func (c *UserController) Get() { c.TplName="login.html" } func (c *UserC ...
- SQL Server数据库中表的增、删、改
通过SqlCommand对象的ExecuteNonQuery方法执行命令行,来实现数据库中表的增.删.改.主要有5步 using System.Data.SqlClient;//载入数据库命名空间 p ...
- 2018年秋季学期《c语言程序设计》学习总结
<c语言程序设计>第四周学习总结 <c语言程序设计>第五周学习总结 <c语言程序设计>第六周学习总结 <c语言程序设计>第七周学习总结 <c语言程 ...