各种Django实用函数
项目描述
Boxine - bx_django_utils
各种Django实用函数
快速入门
pip install bx_django_utils
支持的 Django 版本
bx_django_utils
通常遵循 Django 的支持计划。该项目针对 官方支持的 Django 版本 和 它们各自支持的 CPython 版本 进行了测试。
然而,在特殊情况下,我们可能会决定提前取消对特定版本的 support,例如如果库的开发会受到严重影响。请查看我们的 tox 测试矩阵以获取明确的答案。
现有内容
这里只列出了现有工具的简单列表。请查看源代码和测试以获取更多信息。
bx_django_utils.admin_extra_views
Django Admin 额外视图:https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/admin_extra_views/README.md
bx_django_utils.admin_extra_views.admin_config
通过将其设置为默认管理站点来激活 "ExtraViewAdminSite"
CustomAdminConfig()
- 将 Django Admin Site 更改为 ExtraViewAdminSite 以用于额外视图。
bx_django_utils.admin_extra_views.apps
AdminExtraViewsAppConfig()
- 应用程序配置以自动发现所有额外视图。
bx_django_utils.admin_extra_views.conditions
only_staff_user()
- 仅传递活动管理员用户。所有管理额外视图的默认条件。
bx_django_utils.admin_extra_views.datatypes
AdminExtraMeta()
- 存储伪应用程序和伪模型的信息。PseudoApp()
- 代表 Django 应用程序的信息。实例必须传递给 @register_admin_view()。
bx_django_utils.admin_extra_views.management.commands.admin_extra_views
Command()
- 管理命令 "admin_extra_views":有关注册的管理额外视图的信息。
bx_django_utils.admin_extra_views.registry
AdminExtraViewRegistry()
- 保存有关所有管理额外视图的信息以扩展 URL 和管理应用程序列表。register_admin_view()
- 装饰器,将常规视图添加为伪应用程序/模型到管理中。
bx_django_utils.admin_extra_views.site
ExtraViewAdminSite()
- 一个 AdminSite 对象封装了 Django 管理应用程序的实例,已准备好
bx_django_utils.admin_extra_views.tests.test_admin_extra_views
AdminExtraViewsTestCase()
- 管理额外视图的集成测试。
bx_django_utils.admin_extra_views.utils
iter_admin_extra_views_urls()
- 遍历所有已注册的管理额外视图 URL。reverse_admin_extra_view()
- 获取管理额外视图的 URL,例如:url=reverse_admin_extra_view(YouAdminExtraView)
bx_django_utils.admin_extra_views.views
Redirect2AdminExtraView()
- 转跳到管理扩展视图。
bx_django_utils.admin_utils.admin_urls
构建管理URL的辅助工具
admin_change_url()
- 为模型实例生成Django管理“更改”URL的快捷方式。admin_changelist_url()
- 为模型或实例生成Django管理“变更列表”URL的快捷方式。admin_delete_url()
- 为模型实例生成Django管理“删除”URL的快捷方式。admin_history_url()
- 为模型实例生成Django管理“历史”URL的快捷方式。admin_model_url()
- 使用可选的过滤器参数构建管理更改、添加、变更列表等链接。
bx_django_utils.admin_utils.filters
ExistingCountedListFilter()
- 高级SimpleListFilter,仅列出现有过滤器值及其计数。NotAllSimpleListFilter()
- 与SimpleListFilter类似,但不添加“所有”选项。
bx_django_utils.approve_workflow
基础模型/管理/表单类,用于实现具有草案/批准版本工作流程的模型
bx_django_utils.approve_workflow.admin
BaseApproveModelAdmin()
- 草案/批准模型的基类
bx_django_utils.approve_workflow.forms
PublishAdminForm()
- 在批准时激活模型的REQUIRED_FIELDS_PUBLIC
bx_django_utils.approve_workflow.models
BaseApproveModel()
- 批准模型的基类,以及这些关系模型。BaseApproveWorkflowModel()
- 批准工作流模型的基类。
bx_django_utils.cached_dataclasses
CachedDataclassBase()
- 一个可以轻松存储/恢复到Django缓存的基数据类。
bx_django_utils.data_types.gtin
用于GTIN/UPC/EAN数字的ModelField、FormField和验证器
bx_django_utils.data_types.gtin.form_fields
GtinFormField()
- 带有GTIN验证器的表单字段。
bx_django_utils.data_types.gtin.model_fields
GtinModelField()
- GTIN模型字段
bx_django_utils.data_types.gtin.validators
GtinValidator()
- 验证GTIN号码validate_gtin()
- 与stdnum.ean.validate()相同,但还接受ISBN-10
bx_django_utils.dbperf.cursor
RecordingCursorWrapper()
- django.db.backends.utils.CursorWrapper的实现。
bx_django_utils.dbperf.query_recorder
SQLQueryRecorder()
- 一个上下文管理器,允许记录在其生命周期内执行的SQL查询。
bx_django_utils.feature_flags
功能标志:[链接](https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/feature_flags/README.md)
bx_django_utils.feature_flags.admin_views
ManageFeatureFlagsBaseView()
- 基础管理视图,用于在管理员界面中管理所有现有的功能标志。
bx_django_utils.feature_flags.data_classes
FeatureFlag()
- 一种将状态持久化到 Django 缓存/数据库中的功能标志。
bx_django_utils.feature_flags.test_utils
FeatureFlagTestCaseMixin()
- 用于TestCase
的 mixin,将更改FeatureFlag
条目。为了使测试原子化。get_feature_flag_states()
- 收集有关所有已注册功能标志及其当前状态的信息。
bx_django_utils.feature_flags.utils
if_feature()
- 仅当指定的功能标志启用时才执行装饰函数的装饰器。
bx_django_utils.filename
clean_filename()
- 通过 slugify 将文件名转换为仅 ASCII。filename2human_name()
- 将文件名转换为首字母大写的名称。
bx_django_utils.generic_model_filter.admin_views
通用的 "AdminExtraView" 视图,用于根据任何字段值筛选可访问的模型。
GenericModelFilterBaseView()
- 基础 "AdminExtraView",通过 @register_admin_view() 将此视图添加到管理界面。
bx_django_utils.http
build_url_parameters()
- 返回所有给定参数的编码字符串。
bx_django_utils.humanize.pformat
pformat()
- 使用DjangoJSONEncoder
和回退到pprint.pformat()
的更好pretty-print-format
。
bx_django_utils.humanize.time
human_timedelta()
- 将时间持续时间转换为友好的文本表示。(例如:X ms
,sec
,minutes
等。)
bx_django_utils.json_utils
make_json_serializable()
- 将值转换为 JSON 可序列化值,具有用于特殊对象的转换回调。to_json()
- 通过 make_json_serializable() 和 DjangoJSONEncoder() 将值转换为 JSON。
bx_django_utils.models.color_field
ColorModelField()
- 十六进制颜色模型字段,例如:"#0055ff"(这不是一个 html 颜色选择器小部件)。HexColorValidator()
- 十六进制颜色验证器(七位十六进制表示法,例如:"#0055ff")。
bx_django_utils.models.get_models4user
SelectModelForm()
- 用于选择用户可以 "查看" 的模型的表单。get_user_model_choices()
- 使用给定用户可以 "查看"、"添加"、"修改" 或 "删除" 等所有模型构建表单选择列表。iter_user_models()
- 为给定用户筛选模型。
bx_django_utils.models.manipulate
通过模型在数据库中操作对象的实用工具。
CreateOrUpdateResult()
- create_or_update2() 返回的结果对象,包含有关创建/保存模型的所有信息。FieldUpdate()
- 更新模型字段值的信息。用于 CreateOrUpdateResult.update_infoInvalidStoreBehavior()
- 在 create_or_update() 中使用,如果 "store_behavior" 包含不存在的字段名称。create()
- 使用可选的验证在创建之前创建一个新的模型实例。create_or_update()
- 创建一个新的模型实例或更新一个现有的实例。已弃用!请使用:create_or_update2()create_or_update2()
- 创建一个新的模型实例或更新一个现有的实例,并返回 CreateOrUpdateResult 实例update_model_field()
- create_or_update2() 的默认回调,用于设置已更改的模型字段值并扩展 CreateOrUpdateResult
bx_django_utils.models.queryset_utils
remove_filter()
- 从 QuerySet 中删除已应用的 .filter()remove_model_filter()
- 如果 .filter() 包含对指定模型的引用,则从 QuerySet 中删除已应用的 .filter()
bx_django_utils.models.timetracking
TimetrackingBaseModel()
- 自动设置创建/更新 Datetimes 的抽象基模型。
bx_django_utils.stacktrace
StackTrace()
- 内置可变序列。StacktraceAfter()
- 在访问一个包之后生成堆栈跟踪。get_stacktrace()
- 返回一个 StackTrace 对象,它是一个 FrameInfo 对象的列表。
bx_django_utils.templatetags.accessors
dict_get()
- 从类似字典的容器中返回所需的成员,如果没有则返回空字符串
bx_django_utils.templatetags.humanize_time
human_duration()
- 从模板标签开始的详细时间,例如:<span title="Jan. 1, 2000, noon">2.0 seconds</span>
bx_django_utils.test_utils
测试的实用程序/辅助工具。
bx_django_utils.test_utils.assert_queries
AssertQueries()
- 断言执行的数据库查询:检查表名,重复/相似的查询。
bx_django_utils.test_utils.cache
ClearCacheMixin()
- TestCase 混入,用于在 setUp/tearDown 中清除 Django 缓存MockCache()
- 模拟 Django 缓存后端,以便轻松检查/操作缓存内容
bx_django_utils.test_utils.content_types
ContentTypeCacheFixMixin()
- TestCase 混入,用于填充 ContentType 缓存,以避免不稳定的数据库查询。
bx_django_utils.test_utils.datetime
MockDatetimeGenerator()
- 在测试中使用通用的时间戳模拟 djangotimezone.now()
bx_django_utils.test_utils.fixtures
管理 JSON 文件中的文本固件的实用程序。
BaseFixtures()
- JSON 导出固件的基类。FixturesRegistry()
- 注册表,收集所有现有的固件类。RenewAllFixturesBaseCommand()
- Django管理命令的基类,用于更新所有现有的JSON固定文件SerializerFixtures()
- 帮助存储/恢复序列化为JSON文件的模型实例。autodiscover()
- 通过导入所有 /fixtures//*.py 文件来注册所有固定文件
bx_django_utils.test_utils.forms
AssertFormFields()
- 用于检查现有表单字段的辅助工具。
bx_django_utils.test_utils.html_assertion
HtmlAssertionMixin()
- 包含关于Django测试客户端测试的有用断言的unittest mixin类。assert_html_response_snapshot()
- 使用bx_py_utils中的assert_html_snapshot()通过快照文件断言HttpResponse。get_django_name_suffix()
- 返回一个简短的Django版本字符串,可用于快照"name_suffix",例如:"django42"。
bx_django_utils.test_utils.model_clean_assert
AssertModelCleanCalled()
- 用于断言每个模型实例都调用了full_clean()的上下文管理器。CleanMock()
- 跟踪是否调用了full_clean()。
bx_django_utils.test_utils.playwright
在单元测试中使用Playwright + 快速Django用户登录
PlaywrightConfig()
- 从环境(PWBROWSER,PWHEADLESS,PWSKIP,PWSLOWMO)获取PlaywrightTestCase配置。PlaywrightTestCase()
- 静态LiveServerTestCase,包含用于编写前端测试的Playwright辅助工具。
bx_django_utils.test_utils.users
assert_permissions()
- 检查用户权限。assert_user_properties()
- 检查具有所有属性和密码(可选)的用户实例。filter_permission_names()
- 根据名称生成Permission模型查询,例如:['<app_label>.', ...]make_max_test_user()
- 创建一个具有所有权限(除了{exclude_permissions})的测试用户。make_minimal_test_user()
- 创建一个测试用户并设置给定的权限。make_test_user()
- 创建一个测试用户并设置给定的权限。
bx_django_utils.translation
FieldTranslation()
- 将语言代码映射到翻译字符串的字典-like容器。TranslationField()
- 用于存储特定语言代码集的翻译的字段。TranslationFieldAdmin()
- 为希望显示TranslationFields的ModelAdmin类提供即插即用支持。TranslationFormField()
- TranslationField的默认表单字段。TranslationSlugField()
- 一个唯一的翻译slug字段,与TranslationField()结合使用很有用。create_or_update_translation_callback()
- 为TranslationField的create_or_update2()提供的回调,不会删除现有的翻译。expand_languages_codes()
- 构建包含和不含方言的语言代码的完整列表。get_user_priorities()
- 收集当前用户可用的语言代码。make_unique()
- 扁平化参数并移除重复条目,同时保持顺序不变。merge_translations()
- 合并两个FieldTranslation并忽略所有空/None值,例如。remove_empty_translations()
- 从FieldTranslation中移除所有空/None,例如。user_language_priorities()
- 返回尝试解决FieldTranslation模型字段翻译的顺序。validate_unique_translations()
- 拒绝创建非唯一翻译:通过在更改列表中搜索重复条目来创建ValidationError。
bx_django_utils.user_timezone
自动本地用户时区:https://github.com/boxine/bx_django_utils/blob/master/bx_django_utils/user_timezone/README.md
bx_django_utils.user_timezone.apps
UserTimezoneAppConfig()
- Django应用程序,用于设置用户本地时区。
bx_django_utils.user_timezone.humanize
human_timezone_datetime()
- 渲染包含时区信息的datetime。
bx_django_utils.user_timezone.middleware
InvalidUserTimeZone()
- 不适当的参数值(正确类型)。UserTimezoneMiddleware()
- 通过"UserTimeZone"cookie激活时区。validate()
- 验证UserTimeZonecookie值。
bx_django_utils.user_timezone.templatetags.user_timezone
humane_timezone_dt()
- 模板过滤器,用于渲染包含时区信息的datetime。
bx_django_utils.version
DetermineVersionCommand()
- 将从git确定的版本信息写入命令。
bx_django_utils.view_utils.dynamic_menu_urls
DynamicViewMenu()
- 用于存储关于视图/URL的信息以构建菜单的简单存储。
开发
要开始开发,例如。
~$ git clone https://github.com/boxine/bx_django_utils.git
~$ cd bx_django_utils
~/bx_django_utils$ make
help List all commands
install-poetry install poetry
install install via poetry
update Update the dependencies as according to the pyproject.toml file
lint Run code formatters and linter
fix-code-style Fix code formatting
tox-listenvs List all tox test environments
tox Run unittests via tox with all environments
test Run unittests
publish Release new version to PyPi
docker-test Run tests in docker
makemessages Make and compile locales message files
start-dev-server Start Django dev. server with the test project
clean Remove created files from the test project (e.g.: SQlite, static files)
playwright-install Install test browser for Playwright tests
playwright-inspector Run Playwright inspector
playwright-tests Run only the Playwright tests
您可以使用Django开发服务器启动测试项目,例如。
~/bx_django_utils$ make start-dev-server
这是一个自己的管理命令,它会从我们的测试应用程序创建迁移文件、迁移、收集静态文件,并在没有用户的情况下创建超级用户 ;)
如果您想从头开始,只需删除相关的测试项目文件
~/bx_django_utils$ make clean
...然后再次启动测试服务器 ;)
创建版本
- 在
bx_django_utils/__init__.py
中增加版本号 - 创建拉取请求
- 合并后,调用:
make publish
许可协议
MIT. 欢迎贡献补丁!
关于我们
我们一直在重新思考儿童听觉体验,并创建了一个通过智能技术(Toniebox)将触觉和听觉体验结合在一起的平台。
我们不断寻找工程师加入我们团队的各个领域。如果您有兴趣为我们的平台做出贡献,请查看:https://tonies.com/jobs/
链接
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。
源分发
构建分发
bx_django_utils-79.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cb66087d4e9396281acf5a4394b749cff3062b66082d5726f6a8a342fdd35d0e |
|
MD5 | e46a1e9b6df9e23b690128f279e4b6a6 |
|
BLAKE2b-256 | 628ed56ffeb8f39c176b03439f614526b0b7de2d298bbf3250d6fdd40521cc51 |