django通用模块
Project description
fly_djangoxx
Django + DRF 基础脚手架,提供常用扩展功能。
功能特性
统一响应结构
- 自动包装 API 返回数据为
{code, msg, data, ts}格式 - 支持列表自动转为
{items: []}结构
全局异常处理
- 统一错误码和错误信息返回
- 支持自定义业务异常
APIException - 自动处理 DRF 内置异常
分页组件
- 支持
page和page_size参数 - 返回结构包含
total,page,page_size,total_pages,items
软删除模型
BasicModel: 基础模型,包含create_ts,update_tsTsSoftDeleteModel: 软删除模型,使用delete_ts实现逻辑删除
中间件
RequestTimingMiddleware: API 耗时统计,记录慢请求SQLTimingMiddleware: SQL 执行耗时统计,记录慢 SQL
CORS 配置
- 支持白名单配置
- 精简 Header 和 Methods
日志配置
- 分级日志输出
- 分离 Django 框架日志和应用日志
安装
pip install -e .
使用
在 Django 项目中引入
# settings.py
# 1. 基础配置
INSTALLED_APPS = [
...
'fly_djangox',
'rest_framework',
]
# 2. 引入 DRF 配置(推荐)
from fly_djangox.settings.drf_setting import * # 或逐个引入
# 3. 引入跨域配置(可选)
from fly_djangox.settings.cross_domain_setting import *
# 4. 引入日志配置(可选)
from fly_djangox.settings.logging_setting import *
# 5. 引入中间件配置(可选)
from fly_djangox.settings.api_time_out_setting import *
使用统一响应
from fly_djangox.drf.response import JSONResponse
# 返回成功
return JSONResponse(data={"id": 1, "name": "test"})
# 返回错误
return JSONResponse(code=40000, msg="参数错误")
使用自定义异常
from fly_djangox.drf.exception import APIException
raise APIException(msg="业务错误", code=40001)
使用软删除模型
from fly_djangox.models.soft_delete import TsSoftDeleteModel
class User(TsSoftDeleteModel):
name = models.CharField(max_length=100)
# 查询时自动过滤已删除记录
User.objects.all() # 只返回未删除的
# 删除操作(软删除)
user.delete() # 设置 delete_ts
# 永久删除
user.hard_delete()
# 查询包括已删除的
User.all_objects.all()
继承基础模型
from fly_djangox.models.soft_delete import BasicModel
class Article(BasicModel):
title = models.CharField(max_length=200)
content = models.TextField()
配置项
跨域白名单
# fly_djangox/settings/cross_domain_setting.py
CORS_ALLOWED_ORIGINS = [
"http://localhost:3000",
"https://your-domain.com",
]
慢请求阈值
# API 耗时超过 1000ms 记录警告日志
SLOW_THRESHOLD_MS = 1000
慢 SQL 阈值
# SQL 耗时超过 500ms 记录警告日志
SLOW_SQL_THRESHOLD_MS = 500
依赖
- django >= 4.2
- djangorestframework >= 3.16
- django-cors-headers >= 4.9
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
fly_djangox-0.1.1.tar.gz
(11.5 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fly_djangox-0.1.1.tar.gz.
File metadata
- Download URL: fly_djangox-0.1.1.tar.gz
- Upload date:
- Size: 11.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.24
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e52f8c5ea1d1f573575b894e91a8b0b33bf8452f1d98ff1e2c1d69cefbe4156d
|
|
| MD5 |
4ed161468045eb55e84a3df3d6b78e1d
|
|
| BLAKE2b-256 |
c0fc6f43266714291ae4b2b6c5609e46548188a801f074f82e869c52c41d2749
|
File details
Details for the file fly_djangox-0.1.1-py3-none-any.whl.
File metadata
- Download URL: fly_djangox-0.1.1-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.24
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e53143a2af9acd2ef2030cc5395197bc301f6fa5adb82648d3329193ad61934
|
|
| MD5 |
5ce8aedc0c2820e7d9b6db4717c1ee5d
|
|
| BLAKE2b-256 |
3bb3a1ea8f734a1e6a01b494903990d7a285fafc9e3982ec7284c92c7b514759
|