基於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業務處理邏輯即可, 啟動項目

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM