各种常见的Django相关程序。
项目描述
这个库包含各种Django相关程序,可以扩展或修改框架的行为
很多可组合的抽象模型可供使用
一个用户活动日志应用程序,存储用户的IP地址和用户代理(用于查找多账户很有用)
一个评分应用程序,允许网站上的用户对对象进行投票
一个标签应用程序,支持用户和本地化标签的标签
一个徽章应用程序,允许用户在网站上的行为中获得徽章
对 settings.py 的扩展(当前目录解析、命名空间包支持、设置配置文件支持)
典型的过滤器、模板标签、表单字段等。
该包的完整文档可以在以下位置找到
最新版本可以通过 PyPI 安装
$ pip install lck.django
或
$ easy_install lck.django
此软件包包含一些免费使用的静态图片,这些图片几乎适用于每个Django项目
Silk图标 1.3 by FamFamFam - 需要注明作者
Silk Companion 1 by Damien Guard - 需要注明作者
Country Flags by SenojFlags.com - 需要使用以下HTML
<a href="http://www.senojflags.com">Country flag</a> image from <a href="http://www.senojflags.com">Flags of all Countries</a>
对于好奇者来说,lck代表LangaCore Kit。LangaCore是我的一个单人的软件开发店。
注意: lck.common需要Python 2.7,因为它的所有代码都使用了所谓的四个未来(absolute_imports、division、print_function和unicode_literals)。创建这个库的一个优点是使代码更美观。这些开关在旧Python 2.x和新Python 3.x之间提供了一个有用的过渡状态。你也应该使用它们。
注意: 自0.5.0版本以来,lck.django需要Django 1.3,因为它使我的猴子补丁工作变得更简单。此外,1.3版本很好地废弃了我认为丑陋的行为。
如何运行测试
最简单的方法就是运行
$ DJANGO_SETTINGS_MODULE="lck.dummy.settings" DJANGO_SETTINGS_PROFILE="test" django-admin.py test
这个命令同时运行内部Django测试,这是可以接受的,因为存在猴子补丁和其他应该测试以防止潜在破坏的微妙之处。
示例项目也用作设置Django项目的示例。然而,似乎Django测试对设置的一些更改不满意,所以我们使用test配置文件(从settings-test.py加载覆盖)来避免这种情况。
变更日志
0.8.10
profile现在正确地回滚了create_a_user_profile_ignoring_dberrors()中的失败事务(解决了初始syncdb的PostgreSQL超级用户创建问题)
引入了自动解决初始迁移的依赖关系。如果你使用activitylog、badges、score或tags,除非你使用纯auth.User,否则它们的初始迁移依赖于你的配置模块已准备好。迁移目前依赖于你各自的ACTIVITYLOG_PROFILE_MODEL、EDITOR_TRACKABLE_MODEL、SCORE_VOTER_MODEL或TAG_AUTHOR_MODEL的初始迁移。如果那些迁移应该依赖于不同的迁移或没有,已添加了新的设置。
0.8.9
修复了0.8.8中的同步activitylog模型的回归
dj.choices要求提升到0.9.2(支持Python 2.6 - 3.3)
dj.chain要求提升到0.9.2(支持Python 2.7 - 3.3)
0.8.8
activitylog现在正确地将数据库更新封装在事务中
activitylog在RQ和Celery上现在正确处理模型上的非空约束
SessionAwareLanguageMiddleware简化了,现在只是设置会话中的语言参数。这需要更改中间件顺序:这个中间件应该在SessionMiddleware之后和LocaleMiddleware之前。
默认的INSTRUMENTATION_RULE现在是简单的lambda request: False,这使得TimingMiddleware在与前端缓存(如果未访问会话,则不设置Vary: Cookie)的行为上更好。
0.8.7
activitylog现在提供新的异步模式,内置对RQ或Celery工作者的支持
tags模型中的轻微性能更新
0.8.6
activitylog中间件的轻微性能更新。现在在低内存+慢I/O环境中表现更好。
0.8.5
引入了whois管理命令,以帮助通过会话ID查找用户
使用从 Profile 实例代理的 User 属性不再对每次调用进行查询
0.8.4
TimeTrackable 模型现在可以使用 mark_dirty() 和 mark_clean() 方法强制标记字段为脏
0.8.3
concurrent_get_or_create 现在如果在给定的字段太多(例如,并非所有字段都是唯一的或构成一个唯一组合约束)或太少(例如,字段不形成一个完整的唯一组合约束)时将引发 AssertionError。如果需要在对象创建时使用,应将非唯一字段传递给 defaults 关键字参数。
profile 现在通过在 User 上注册 post-save 信号并创建一个 AUTH_PROFILE_MODEL 实例来自动实现配置文件账户同步。已创建一个名为 sync_profiles 的管理命令,用于现有应用程序。
单元测试已转换为 unittest2 格式
0.8.2
修复了 0.8.1 的回归问题:由于更新后的 concurrent_get_or_create 在 MySQL 上由于 MySQL-python 中的狗牙 savepoint 支持而严重失败,因此已删除 savepoint 支持
0.8.1
concurrent_get_or_create 基于 Django 1.4.2 中的 get_or_create
namespace_package_support 已扩展以涵盖 django.utils.translation(以前,使用 setup.py develop 或 pip install -e . 安装时,命名空间打包项目才能与 I18N 一起工作)
dj.chain 的要求已升级到 0.9.1(支持更多集体方法)
0.8.0
lazy_chain 已移动到单独的 dj.chain 包。因此,旧接口已被弃用,将在未来的版本中删除。
activitylog 更新:删除了冗余的用户字段,以便在将 ACTIVITYLOG_PROFILE_MODEL 设置为 auth.User 时再次使用
EditorTrackable 不再需要覆盖 get_editor_from_request,如果 EDITOR_TRACKABLE_MODEL 设置为配置文件模型而不是 auth.User
配置文件管理模块包括一个预定义的 ProfileInlineFormSet,用于将配置文件相关模型作为内联包含到 UserAdmin 中
模拟应用程序现在在版本 1.4.0 - 1.4.2 中通过所有内部 Django 单元测试
0.7.14
lazy_chain:0.7.13 中引入的修复引入了不同类型的错误,已回滚并正确修复。还包括更多测试。
flatpages 现在在浏览器请求的语言不可用的情况下以默认语言提供内容
一些内部清理
0.7.13
lazy_chain:在迭代切片时,迭代器获取了一个多余的项。它没有将其返回,因此结果正确,但如果使用 xfilter(),则会导致不必要的迭代。
dj.choices 的要求已升级到 0.9.0(选择是 int 子类,unicode(choice) 现在等效于 choice.desc)
0.7.12
命名空间包支持现在在 settings.py 中的 Unicode 字面量中工作
模拟应用程序设置改进:定时中间件已向下移动到堆栈中,因为它使用用户会话,WSGI 应用程序定义是错误的
0.7.11
没有代码更改
dj.choices 的要求已升级到 0.8.6(与 0.8.5 完全兼容并显著改进 ChoiceFields)
0.7.10
BACKLINKS_LOCAL_SITES 设置用于控制是否应在发现回链时将所有配置的站点视为本地站点
更多回链修复,数据模型修复,以提高与不同后端的兼容性
0.7.9
在 activitylog 中修复了回链哈希生成
activitylog 接受 UTF-8 字符在 User-Agent 头部中
activitylog South 迁移 #0002 现在也支持具有 DDL 事务的后端(例如 Postgres)
0.7.8
修复了 South 对自定义字段(DefaultTags 和 MACAddressField)的支持。
0.7.7
全面支持 South 迁移。对于现有安装,你应该运行
$ python manage.py migrate APP_NAME 0001 --fake $ python manage.py migrate APP_NAME
其中 APP_NAME 是 activitylog、badges、common、flatpages、profile、score 或 tags。
将 activitylog.models.Backlink 和 activitylog.models.UserAgent 中的唯一性约束移动到单独的 hash 字段,以使 MySQL 满意。South 迁移应处理 schema 进化,无论你使用哪种后端。
0.7.6
进一步提高了 Django 1.4 的兼容性:现在自动完成外键混合工作正常
0.7.5
Django 1.4 兼容性提高
0.7.4
Django 1.4 USE_TZ = True 兼容性
更新了示例设置以支持新的 Django 1.4 设置
Profile 模型中的 User 属性代理重写以支持 User 模型上的所有内置和自定义属性
activitylog.middleware 现在也记录未经身份验证请求的 IP 和用户代理。可能影响性能。
0.7.3
为 TagStem.objects.get_content_objects() 添加了 order_by 参数
0.7.2
将选择移动到单独的 dj.choices 包。因此,旧接口已被弃用,将在未来的版本中删除。
0.7.1
清理辅助函数后修复了 0.7.0 中的回归问题 lck.django.score
0.7.0
引入了 lck.django.badges
清理了 lck.django.common,lazy_chain 显著升级(现在可以正确支持具有过滤、切片和排序的多个可迭代对象)
0.6.7
lck.django.score:在总分更改时发送信号(允许在应用程序端实施缓存策略)
引入了 maxid 管理命令:对于每个注册的模型,返回主键的当前最大值
0.6.6
MACAddressField MAC 地址规范化忽略空值,支持 Cisco 0000.0000.0000 语法,并修复了 0.6.5 中的一个小回归
引入了 SessionAwareLanguageMiddleware
为可标记对象提供了一个方便的标签获取器,改进了与 EditorTrackable 的兼容性
0.6.5
在 MACAddressField 中对 MAC 地址进行了更严格的规范化
0.6.4
引入了 ImageModel
Named 模型的名称字段长度扩展到 75 个字符
0.6.3
修复了人可读 timediff 过滤器中的一个令人尴尬的漏洞
0.6.2
修复了 MACAddressField 规范化漏洞
0.6.1
具有 ModelAdmin 的可点击 Django 管理界面
在 ModelAdmin 中支持“单独编辑”链接的 ForeignKey 字段
在 lck.django.cache_backends 中压缩 PyLibMCCache 后端
在 activitylog 中支持回链
压缩和优化了图像
使用 Pillow 代替 PIL
0.6.0
哇,变化很多!
TimeTrackable 变得更加智能。包括自动更新对象显著更改时的 cache_version 属性。只有当对象实际发生变化时,modified 才会更新。dirty_fields 属性显示上次保存以来的更改属性(也适用于由多个模型组成的对象,包括抽象模型)。
受 David Cramer 和 EuroPython 2011 上的 Simon Willison 的启发。
现在,dogpile-safe的lck.django.cache支持自定义无效化器,不仅可以通过时间进行无效化,还可以通过例如模型变更(例如TimeTrackable.cache_version)进行无效化。
现在,设置配置文件支持需要修改Django项目的manage.py脚本。这是由Django加载设置的不幸设计所迫。
活动日志已移至其自己的应用lck.activitylog,现在它还跟踪登录访客的IP和用户代理(在追查多账户时很有用)。
引入了一个名为SavePrioritized的抽象模型,该模型在模型上添加了优先级。应用程序的各个部分可以指定它们使用的优先级。如果它们更新了一个最初由具有更高优先级的实体保存的属性,则更新将被静默忽略。
引入了流行方法的并发感知版本Model.objects.get_or_create(不出所料地称为concurrent_get_or_create)
引入了一个支持嵌套的commit_on_success版本(不出所料地称为nested_commit_on_success)
引入了用于简化私人URL保护的BasicAuthMiddleware。
EditorTrackable现在在级联外键方面是安全的(由用户创建或修改的内容在从数据库中删除此用户后不会删除)。此外,还有一些不错的管理功能改进。
现在,TimingMiddleware不会破坏使用process_view()的其他中间件,并且在总体上更智能。
在响应中添加了X-Slo头,以供TimingMiddleware使用。
render()现在根据渲染输出计算和发出ETags。
typical_handler()现在可以redirect_on_success。
来自BBCode过滤器的链接现在将在新窗口中打开,并且已设置rel="nofollow"。
引入了{%settings KEY%}模板标签。
引入了返回表示应用程序版本的短字符串的模板标签{%git_version%}。这是基于Django项目所在的Git存储库中的最新提交。
cycle_filter模板过滤器现在支持显式计数器设置和增量。
引入了将数据转换为Base64和从Base64转换回来的模板过滤器。
引入了集成的JQuery UI和JQueryMobile单选按钮小部件。
改进了文档。
增加了更完整的翻译。
0.5.8
引入了简化的TimingMiddleware。
基于BaseProfile的配置文件现在返回self作为get_profile()。
添加了奖杯图标。
引入了具有{%color%}标签的控制台标签库。
允许渲染非请求上下文。
引入了Choices.ToNames装饰器。
manage.py shell中的预导入现在也适用于具有自定义app_model的模型。
0.5.7
引入了EditorTrackable。
选择项可以以分组形式呈现。目前需要将'--keyword=Group:2 '添加到django/core/managemenet/commands/makemessages.py中的xgettext调用中。清理该操作计划在0.6.0版中完成。
typical_handler现在与没有save()方法的表单一起工作。
引入了upperfirst过滤器:仅将第一个字符转换为大写。
对于宽图像的方形缩略图现在可以正常工作。
将辅助器的内容移动到common中(启用i18n并清理API),因此辅助器模块已弃用。
一些国际化更新
0.5.6
在缩略图过滤器中,引入了对自动裁剪为方形的支持
微小的翻译更新
0.5.5
组成员继承偏移属性
0.5.4
对PolishDateWidget进行了微小更新
0.5.3
AvatarSupport为自定义头像的抽象模型。GravatarSupport可以作为后备或独立使用。
typical_handler现在正确支持文件上传
修复了bug:没有得分的对象不再引发异常
清理了命名空间更改的残留项
0.5.2
核心Django的猴子补丁已标注并重新分组,以便未来更容易管理(是的,还有更多要来)
一个统计计算器
微小bug修复
0.5.1
标签现在支持具有自定义管理器的模型
对于命名和标题模型,引入了只读的name_urlencoded和title_urlencoded属性。作为模板标签的参数很有用。
通过使用不神圣的<<运算符重载来设置选项的附加属性
在标签中,支持获取带有特定词根的对象
0.5.0
从langacore.kit迁移到lck命名空间
将许可协议从GPL 3迁移到MIT
将版本从alpha状态提升到beta状态,代码已投入生产超过一年
古老的历史
在0.5.0之前没有保留适当的变化日志