Skip to main content

快速构建 RESTful API

Project description

Dseagull

快速构建 RESTful API


INSTALLED_APPS

添加 dseagull 到 INSTALLED_APPS 中, 注意必须要放在 rest_framework 前面

INSTALLED_APPS = [
    ...
    'dseagull',
    'rest_framework',
]

MIDDLEWARE

添加 dseagull.logger.LoggerMiddleware 到 MIDDLEWARE 中, 用于收集日志的字段

MIDDLEWARE = [
    'dseagull.logger.LoggerMiddleware',
    ...
]

REST_FRAMEWORK

不需要配置 REST_FRAMEWORK, 默认配置如下:

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'dseagull.pagination.PageNumberPagination',
    'PAGE_SIZE': 10,
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema',
    'DEFAULT_FILTER_BACKENDS': [
        'django_filters.rest_framework.DjangoFilterBackend',
        'rest_framework.filters.SearchFilter',
        'rest_framework.filters.OrderingFilter',
    ],
    
}

models.BaseModel

提供基础模型, 添加了 created_at, updated_at

from django.db import models


class BaseModel(models.Model):
    class Meta:
        abstract = True

    created_at = models.DateTimeField(
        auto_now_add=True, verbose_name='创建时间', db_index=True,
    )
    updated_at = models.DateTimeField(
        auto_now=True, verbose_name='更新时间', db_index=True,
    )

serializers.Field

支持 required=True 时提示带上字段的 help_text 信息

from rest_framework.serializers import Serializer
class ExampleSerializer(Serializer):
    name = field(help_text='姓名')
ExampleSerializer(data={}).is_valid()

原本提示:这个字段是必填项。

现提示:姓名:这个字段是必填项。


支持 required=True, null=False 时提示带上字段的 help_text 信息

from rest_framework.serializers import Serializer
class ExampleSerializer(Serializer):
    name = field(help_text='姓名')
ExampleSerializer(data={'name': None}).is_valid()

原本提示:This field may not be null. 现提示:姓名:不能为空。


支持 required=True, null=False 时提示带上字段的 help_text 信息

from rest_framework.serializers import Serializer
class ExampleSerializer(Serializer):
    name = field(help_text='姓名')
ExampleSerializer(data={'name': ''}).is_valid()

原本提示:This field may not be blank. 现提示:姓名:不能为空白。


Filters

支持时间区间的查询

from dseagull.filters import BaseFilterSet
class PersonFilter(BaseFilterSet):
    last_name = filters.CharFilter()
    created_at = filters.CharFilter(method='filter_datetime', )

    class Meta:
        model = Person
        fields = ('id',)

在查询时, 参数输入 /?created_at=1738771200,1738771201 即可过滤出对应的数据


Commands

startmodel

python manage.py startmodel -n Apple

执行上面的命令, 可以自动创建和修改标准化的 model, serializer, viewset, routers


JWT

简化对称加密型的 JWT 编码和解码的过程, 需要配置 JWT_KEY 和 JWT_EXP,

from dseagull.djwt import JWTHS256
token = JWTHS256().encode({'username': 'admin'})
payload = JWTHS256().decode(token)

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

dseagull-0.0.21.tar.gz (13.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dseagull-0.0.21-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file dseagull-0.0.21.tar.gz.

File metadata

  • Download URL: dseagull-0.0.21.tar.gz
  • Upload date:
  • Size: 13.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for dseagull-0.0.21.tar.gz
Algorithm Hash digest
SHA256 3c13ca70a7d054b4489b08fa77954c5fce6ffcee28da93538df9ce09d4df77af
MD5 702f94d9b37e31f6935d5d8c1bbfa135
BLAKE2b-256 7d65d67630278ef2c45e0b604130a25b7f96e236f7680aaf74d194e3a366abaa

See more details on using hashes here.

File details

Details for the file dseagull-0.0.21-py3-none-any.whl.

File metadata

  • Download URL: dseagull-0.0.21-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.12.3

File hashes

Hashes for dseagull-0.0.21-py3-none-any.whl
Algorithm Hash digest
SHA256 5f465f18152a74db8b700332ec2966f88853ea35dca7ed44d162349001e1831e
MD5 610e28cd8569d1b89611d494b67e53f6
BLAKE2b-256 fb0618993fa9e2ba46aae5a55885d85b8da95b083ca6b0eb424ddc7cb2006c74

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page