最近研究了一下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的更多相关文章

  1. 基于Python+Django的Kubernetes集群管理平台

    ➠更多技术干货请戳:听云博客 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调 ...

  2. Python+django开发环境搭建

    Python目前主版本有2个,2.7+和3.4+ 新入手,决定还是从2.7开始 先从python官网https://www.python.org/下载python2.7.10,64位版本(这里注意,选 ...

  3. pycharm环境下用Python+Django开发web搭建

    1.安装pycharm: 2.安装Python: 3.安装mysql: 4.安装Django; pip3 install django 5.创建Django工程命令方式: # 创建Django程序 d ...

  4. 使用 Visual Studio Code(VSCode)搭建简单的 Python + Django 开发环境

    写在前面的话 作为有个 Python 菜逼,之前一直用的 Pycharm,但是在主题这一块怎么调整都感觉要么太骚,看起来不舒服,要么就是简直不能看.似乎用大 JB 公司 IDE 的人似乎都不怎么重视主 ...

  5. 利用基于Python的Pelican打造一个自己的个人纯静态网站

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_100 其实呢这么多年以来我一直建议每个有技术追求的开发者都要有写技术博客记笔记的良好习惯,一来可以积累知识,二来可以帮助别人,三来 ...

  6. Python Django开发遇到的坑(版本不匹配)

    这个问题 进入django 后台, 添加,修改都不可以,只有删除可以,那么百分之百是这个问题 对照一下,是你的django 版本低了还是 python版本高了,对照的话就没问题了 这个坑,弄了两天啊! ...

  7. 基于Spring Boot框架开发的一个Mock

    背景:在项目后端接口开发还未完成,我们无法进行自动化接口用例的调试,希望与开发同步完成接口自动化用例的编写及调试,待项目转测后,可以直接跑自动化用例,提高测试效率. 选用的maven + Spring ...

  8. Python Django 开发 4 ORM

    第三篇最后写了,光知道那些基础的查询在项目中是没有什么卵用的,重点是实体关系映射(ORM),今天学习了,来记录一下,关键词:ForeignKey(多对一).OneToOneField(一对一).Man ...

  9. 7-4 python 接口开发(提供mock服务)

    1.登录接口开发(数据存在数据库中)  接口开发做mock(模拟功能) tools.py import pymysql def my_db(sql): conn = pymysql.connect(h ...

随机推荐

  1. c语言提高(第二次作业)

    1. 画出字符串一级指针内存四区模型 #include <stdio.h> #include <string.h> int main(void) { char buf[20]= ...

  2. BEX5下实现鼠标滚动滚动条

    使用前提: 页面内容过多,默认的滚动条太难看,在不引入滚动条插件情况下让界面不使用滚动条,又能通过鼠标滚动 实现步骤: 1 在会出现滚动条的组件上设置隐藏滚动条 overflow:hidden; 2 ...

  3. mysqldump 导出

    导出单张表数据:mysqldump -h127.0.0.1  -uroot -p database_name table_name > user_action.sql

  4. Python——Pycharm打包exe文件

    一.安装pyinstraller    pip install  PyInstaller 二.打包程序   pyinstaller.py -F -w -i tubiao.ico 文件名.py -F 表 ...

  5. 爬虫之Scrapy框架介绍

    Scrapy介绍 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内 ...

  6. P4783 【模板】矩阵求逆

    原题链接 https://www.luogu.org/problemnew/show/P4783 一道模板题,更重要的省选难度..... 题目要求的是一个n*n的逆矩阵,还要对大数取膜. 普通高中生: ...

  7. ☆ [POI2007] ZAP-Queries 「莫比乌斯反演」

    题目类型:莫比乌斯反演 传送门:>Here< 题意:求有多少对正整数对\((a,b)\),满足\(0<a<A\),\(0<b<B\),\(gcd(a,b)=d\) ...

  8. thymeleaf 页面获取当前页面的完整URL地址

    下面两种方法是一样的 <div th:text="${#httpServletRequest.getRequestURL() +'?'+ #httpServletRequest.get ...

  9. xadmin后台 导入 excel 功能拓展

    新建 excel 文件 在 xadmin 的 plugins 下添加一个 excel.py # _*_ coding:utf-8 _*_ __author__ = "yangtuo" ...

  10. vue实战记录(五)- vue实现购物车功能之商品总金额计算和单选全选删除功能

    vue实战,一步步实现vue购物车功能的过程记录,课程与素材来自慕课网,自己搭建了express本地服务器来请求数据 作者:狐狸家的鱼 本文链接:vue实战-实现购物车功能(五) GitHub:sue ...