zoukankan      html  css  js  c++  java
  • 基于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业务处理逻辑即可, 启动项目

     

  • 相关阅读:
    ZR#954 分组
    Hdu5178
    最大熵模型
    Mysql学习
    稀疏编码(Sparse Coding)的前世今生(一) 转自http://blog.csdn.net/marvin521/article/details/8980853
    机器学习中的相似性度量
    ORACLE的字符串操作函数
    spark shuffle
    sprak 环境搭建的坑
    python 安装cx_Oracle模块, MySQLdb模块, Tornado
  • 原文地址:https://www.cnblogs.com/andrew209/p/9739700.html
Copyright © 2011-2022 走看看