基于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

 1 from django.http import HttpResponse
 2
 3 from .utils import process_parameters, validate_parameters, read_response
 4
 5
 6 def postdemo(request):
 7     if request.method == ‘POST‘:
 8         dic_params = process_parameters(request.body.decode(‘utf-8‘))   # 一定要用utf-8解码,不然传入的是bytes类型b‘body‘
 9         if validate_parameters(dic_params):
10             result = read_response()
11             res = HttpResponse(result)
12             # res.__setitem__("resultcode", ‘0‘)  # 用这个也OK, __setitem__可以修改默认的header, 比如Content-Type, setdefault不行
13             res.setdefault(‘resultcode‘, ‘0‘)
14             res.setdefault(‘msg‘, ‘no error‘)
15             return res
16         else:
17             return HttpResponse(‘error username or password!‘)
18     else:
19         return HttpResponse(‘error method!‘)

postdemo 包下创建utils.py, 定义业务逻辑方法, 采用函数式编程也可以

 1 import configparser
 2 import json
 3
 4
 5 def read_config():
 6     config = configparser.ConfigParser()
 7     dic = {}
 8     config.read("./config.ini", encoding="utf8")
 9     config.sections()
10     dic["username"] = config.get("login", "username")
11     dic["password"] = config.get("login", "password")
12     return dic
13
14
15 def read_response():
16     config = configparser.ConfigParser()
17     dic = {}
18     config.read("./config.ini", encoding="utf8")
19     config.sections()
20     dic["nickname"] = config.get("response_data", "nickname")
21     dic["sex"] = config.get("response_data", "sex")
22     dic["age"] = config.get("response_data", "age")
23     dic["status"] = config.getint("response_data", "status")
24     dic["uid"] = config.get("response_data", "uid")
25     return json.dumps(dic, ensure_ascii=False)
26
27
28 def process_parameters(body):
29     try:
30         body_dic = {}
31         key_values = str(body).split("&")
32         for key_value in key_values:
33             body_dic[key_value.split("=")[0]] = key_value.split("=")[1]
34         return body_dic
35     except Exception as e:
36         return e
37
38
39 def validate_parameters(body):
40     if isinstance(body, dict):
41         dic_config = read_config()
42         if dic_config["username"] == body["username"] and dic_config["password"] == body["password"]:
43             return True
44         else:
45             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

1 from django.contrib import admin
2 from django.urls import path
3
4 from . import views
5
6 urlpatterns = [
7     path(‘admin/‘, admin.site.urls),
8     path(‘postdemo‘, views.postdemo),
9 ]

默认文件setting.py, 注释掉中间件的csrf安全验证, 其他默认

1 MIDDLEWARE = [
2     ‘django.middleware.security.SecurityMiddleware‘,
3     ‘django.contrib.sessions.middleware.SessionMiddleware‘,
4     ‘django.middleware.common.CommonMiddleware‘,
5 #    ‘django.middleware.csrf.CsrfViewMiddleware‘,
6     ‘django.contrib.auth.middleware.AuthenticationMiddleware‘,
7     ‘django.contrib.messages.middleware.MessageMiddleware‘,
8     ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,
9 ]

到这里就完了, 一个简单的post 接口就完成了, 如果还有进行cookie等校验, 完善utils.py业务处理逻辑即可, 启动项目

原文地址:https://www.cnblogs.com/andrew209/p/9739700.html

时间: 2024-10-25 13:09:11

基于Python Django开发的一个mock的相关文章

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

原文出自[听云技术博客]:http://blog.tingyun.com/web/article/detail/1345 时至今日,接触kubernetes也有一段时间了,而我们的大部分业务也已经稳定地运行在不同规模的kubernetes集群上,不得不说,无论是从应用部署.迭代,还是从资源调度管理等方面都有其难以言喻的优势,但是随着业务的不断增长,以及服务的多元化,容器的体量与管理的难度也随之增长. 浅述Kubernetes集群日常管理维护中的一些痛点: 1.较为庞大的集群规模及容器数量维护管理

windows 7搭建python+django开发环境

windows 7 64位,搭建python+django 开发环境实践 一.安装python 因为要应用于京东云或百度云引擎,选择2.7.4.到python官网下载相应版本并安装.安装完成后,需要配置环境变量,Path中添加c:\python27,我直接安装在c盘根目录下. cmd输入python回车,进入python环境,ok结束 二.安装django  到官网下载相应版本包,然后解压,cmd工作目录切换到解压路径,运行python setup.py install 报错:ImportErr

Python+django开发环境搭建

Python目前主版本有2个,2.7+和3.4+ 新入手,决定还是从2.7开始 先从python官网https://www.python.org/下载python2.7.10,64位版本(这里注意,选择了64位版本后,后面用到的python库也需要同样是64位的),python2.7用的还是vc9编译的,这个很重要,后续用到的库最好也是选择vc9编译出来的,否则容易出问题 安装完后,查看python版本 安装完python后,作为开发,肯定需要一个集成开发环境,安装完python后,python

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

写在前面的话 作为有个 Python 菜逼,之前一直用的 Pycharm,但是在主题这一块怎么调整都感觉要么太骚,看起来不舒服,要么就是简直不能看.似乎用大 JB 公司 IDE 的人似乎都不怎么重视主题这个东西. 我个人是那种“喜新厌旧”的,所以看久了 Pycharm 就感觉很难受了,再加上 Pycharm 太笨重了,就换成了以前短时间用过的 VSCode,以前没用是懒得折腾插件,现在闲下来准备折腾一下! 这里放一张我现在的 Pycharm 的配色主题: 闲话少说,进入正题! 创建 Django

Python Django 开发 4 ORM

第三篇最后写了,光知道那些基础的查询在项目中是没有什么卵用的,重点是实体关系映射(ORM),今天学习了,来记录一下,关键词:ForeignKey(多对一).OneToOneField(一对一).ManyToManyField(多对多) 实体定义: 1 from django.db import models 2 3 # Create your models here. 4 class Publisher(models.Model): 5 name = models.CharField(max_l

python+django开发的运维工具——游戏内测服更新系统

这套系统,是学了python和django来,第一个正式开发好的小项目.小工具,只不过是,这套系统,需要优化的东西还很多,但目前也用的OK.年后回来,准备把新吸收的技术,开发正式服更新系统. 在这里,先感谢下老男孩运维培训机构,我的linux运维和python运维开发是从这里起步的,现在又准备报名他的mysql dba课程了.另外得感谢下刘天斯大神哈,从他出版的<Python自动化运维:技术与最佳实践>书上学了不少东西,并加入到了这个小工具中. 不啰嗦了,先工具图吧(以下图都截自我测试服上的,

python django TDD实现一个带简单注册的记事本例子

1.新建 django应用   NotPad 2.新建项目 note 3.新建功能测试 mkdir function_test touch function_test/ __init__.py 在 /function_test下新建tests.py 功能测试   /function_test/tests.py代码 from selenium import webdriver from selenium.webdriver.common.keys import Keys import time f

使用Python Django框架创建一个小型博客

---恢复内容开始--- 登录页面: 注册页面: 首页综合页面: 使用基于ListView的通用视图,获取article_list,category_list,popular_articles,views_articles等数据对index页面进行渲染的到首页综合页面. 使用基于ListView类的通用视图函数ListView渲染,当传入category_id是则通过category外键过滤出同一category的文章作为article_list渲染category_detail.html页面.

Python Django 开发 2 数据库

一半教程用的Django都是1.8以前的版本,导致跟我用的1.8.2的版本用法有些出入,所以只能自己去官网看文档,以下一下是看官方文档而理解的,英语渣渣,可能会有理解有误的地方 先记录下如何查看django的版本: >>>python >>>import django >>>django.VERSION (1, 8, 2, 'final', 0) 把官网的那段示例Model copy过来,为了加深印象,我自己会手写一边: from django.db