django通用模块
Project description
fly_django
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_django',
'rest_framework',
]
# 2. 引入 DRF 配置(推荐)
from fly_django.settings.drf_setting import * # 或逐个引入
# 3. 引入跨域配置(可选)
from fly_django.settings.cross_domain_setting import *
# 4. 引入日志配置(可选)
from fly_django.settings.logging_setting import *
# 5. 引入中间件配置(可选)
from fly_django.settings.api_time_out_setting import *
使用统一响应
from fly_django.drf.response import JSONResponse
# 返回成功
return JSONResponse(data={"id": 1, "name": "test"})
# 返回错误
return JSONResponse(code=40000, msg="参数错误")
使用自定义异常
from fly_django.drf.exception import APIException
raise APIException(msg="业务错误", code=40001)
使用软删除模型
from fly_django.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_django.models.soft_delete import BasicModel
class Article(BasicModel):
title = models.CharField(max_length=200)
content = models.TextField()
配置项
跨域白名单
# fly_django/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.0.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.0.tar.gz.
File metadata
- Download URL: fly_djangox-0.1.0.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 |
d87c25733b64dbc76b3cb5383e5556f7954cce4a86cc2a3e9524b25682950824
|
|
| MD5 |
e5ed0beb1a049d83d9630bcbc433ce4f
|
|
| BLAKE2b-256 |
c3dc55af76ece71d8185063a94a5215f2533a7e5a2f3b97de514e25b9896076c
|
File details
Details for the file fly_djangox-0.1.0-py3-none-any.whl.
File metadata
- Download URL: fly_djangox-0.1.0-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 |
a2481af69409841449770a8472dca38b89cfc31be807a56f03ebf12017666d3b
|
|
| MD5 |
0a176bee72ad693e911d88dd4080b0bb
|
|
| BLAKE2b-256 |
2ae92da733159060e7a90a263455b522f74e38ee1db3c5698f4fe027de5d7dca
|