基于Django的项目的杂项工具
项目描述
django的杂项工具。
还可以查看兄弟项目:django-cms-tools(Django-CMS周围的工具/助手)。
| | https://pypi.python.org/pypi/django-tools/ | |
| github.com/jedie/django-tools/actions | |
| codecov.io/gh/jedie/django-tools | |
| coveralls.io/r/jedie/django-tools |
(Logo contributed by @reallinfo see #16)
试用
例如
~$ git clone https://github.com/jedie/django-tools.git
~$ cd django-tools/
~/django-tools$ ./manage.py
现有内容
为允许的用户提供用户媒体文件
只为允许的用户提供settings.MEDIA_ROOT
文件。
请参阅此处单独的README:django_tools/serve_media_app
模式版本保护
通过添加自动递增的版本号,保护模型免受用较旧的条目覆盖较新的条目。
请参阅此处单独的README:django_tools/model_version_protect
OverwriteFileSystemStorage
一个Django文件系统存储,如果内容发生变化,将覆盖现有文件并可以创建备份。
class ExampleModel(models.Model):
foo_file = models.FileField(
storage=OverwriteFileSystemStorage(create_backups=True)
)
bar_image = models.ImageField(
storage=OverwriteFileSystemStorage(create_backups=False)
)
备份通过追加后缀和序列号创建,例如。
- 源....: foo.bar
- 备份 1..: foo.bar.bak
- 备份 2..: foo.bar.bak0
- 备份3..: foo.bar.bak1
只有当文件内容改变时才会创建备份文件。但至少要备份一次!
Django日志工具
将其放入您的设置中,例如:
from django_tools.unittest_utils.logging_utils import CutPathnameLogRecordFactory, FilterAndLogWarnings
# Filter warnings and pipe them to logging system
# Warnings of external packages are displayed only once and only the file path.
warnings.showwarning = FilterAndLogWarnings()
# Adds 'cut_path' attribute on log record. So '%(cut_path)s' can be used in log formatter.
logging.setLogRecordFactory(CutPathnameLogRecordFactory(max_length=50))
LOGGING = {
# ...
'formatters': {
'verbose': {
'format': '%(levelname)8s %(cut_path)s:%(lineno)-3s %(message)s'
},
},
# ...
}
(例如,通过以下方式激活警告:export PYTHONWARNINGS=all
)
ThrottledAdminEmailHandler
ThrottledAdminEmailHandler的工作方式与原始的django.utils.log.AdminEmailHandler类似,但会限制在一定时间范围内发送的邮件数量。使用示例:
LOGGING = {
# ...
"handlers": {
"mail_admins": {
"level": "ERROR",
"class": "django_tools.log_utils.throttle_admin_email_handler.ThrottledAdminEmailHandler",
"formatter": "email",
"min_delay_sec": 20, # << -- skip mails in this time range
},
# ...
},
# ...
}
django_tools.template.loader.DebugCacheLoader
将模板名称作为HTML注释插入,例如:
<!-- START 'foo/bar.html' -->
...
<!-- END 'foo/bar.html' -->
要使用此功能,您必须将django_tools.template.loader.DebugCacheLoader添加为模板加载器。
例如:仅在DEBUG模式下激活
if DEBUG:
TEMPLATES[0]["OPTIONS"]["loaders"] = [
(
"django_tools.template.loader.DebugCacheLoader", (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
)
]
发送文本+HTML邮件
一个辅助类,用于使用Django模板库发送文本+HTML邮件。
您需要两个模板文件,例如:
您必须按如下方式指定模板文件:template_base="mail_test.{ext}"
通过Celery任务发送
# settings.py
SEND_MAIL_CELERY_TASK_NAME="mail:send_task"
from django_tools.mail.send_mail import SendMailCelery
SendMailCelery(
template_base="mail_test.{ext}",
mail_context={"foo": "first", "bar": "second"},
subject="Only a test",
recipient_list="foo@bar.tld"
).send()
不使用Celery发送
from django_tools.mail.send_mail import SendMail
SendMail(
template_base="mail_test.{ext}",
mail_context={"foo": "first", "bar": "second"},
subject="Only a test",
recipient_list="foo@bar.tld"
).send()
请参阅现有的单元测试
延迟工具
有时您想模拟处理需要更长一点的时间。为此,存在django_tools.debug.delay.SessionDelay
和django_tools.debug.delay.CacheDelay
。使用将创建日志条目和用户消息,如果用户已认证。
更多信息请参阅单独的django_tools/debug/README.creole文件。
文件管理器库
用于构建类似文件管理器、画廊等Django应用的库。
更多信息,请阅读./filemanager/README.creole
按站点的缓存中间件
类似于django UpdateCacheMiddleware和FetchFromCacheMiddleware,但有一些增强功能:./cache/README.creole中的“按站点缓存”
平滑缓存后端
与django缓存后端相同,但添加了cache.smooth_update()
,可以平滑地根据当前系统负载清除缓存。更多信息请参阅:./cache/README.creole中的“平滑缓存后端”
本地同步缓存
在多线程环境中保持本地字典的最新状态。对于缓存字典很有用。更多信息,请阅读./local_sync_cache/local_sync_cache.py中的文档字符串。
threadlocals中间件
要在任何地方获取请求对象,请使用./middlewares/ThreadLocal.py
动态SITE_ID中间件
注意:目前未维护!TODO:修复所有python/django版本的单元测试
使用基于当前请求域名名的中间件动态设置settings.SITE_ID。域名别名可以是简单的字符串,也可以是正则表达式。
更多信息,请阅读./dynamic_site/README.creole
StackInfoStorage
类似于LegacyFallbackStorage的消息存储,但每个消息都会有一个堆栈信息,这对调试很有帮助。只有在settings.DEBUG或MESSAGE_DEBUG开启时才会添加堆栈信息。要使用它,请将以下内容放入您的设置中:
MESSAGE_STORAGE = "django_tools.utils.messages.StackInfoStorage"
更多信息,请阅读./utils/messages.py中的文档字符串。
限制到用户组
通过选择仅有一个字段来限制某些内容
- 匿名用户
- 员工用户
- 超级用户
- ..所有现有的用户组..
更多信息,请阅读./limit_to_usergroups.py中的文档字符串。
权限辅助工具
请参阅django_tools.permissions和单元测试:django_tools_tests.test_permissions
表单/模型字段
- 目录字段 - 检查是否存在并在定义的基路径中
- 带有验证器的语言代码字段
- 媒体路径字段 浏览现有路径以选择和验证输入
- 签名分隔的表单/模型字段 例如逗号分隔的字段
- 静态路径字段
- URL字段 原始django表单URLField的灵活版本
单元测试辅助工具
Selenium测试用例
有Firefox和Chromium测试用例,包括和不包括django StaticLiveServerTestCase!
Chromium + StaticLiveServer示例
from django_tools.selenium.chromedriver import chromium_available
from django_tools.selenium.django import SeleniumChromiumStaticLiveServerTestCase
@unittest.skipUnless(chromium_available(), "Skip because Chromium is not available!")
class ExampleChromiumTests(SeleniumChromiumStaticLiveServerTestCase):
def test_admin_login_page(self):
self.driver.get(self.live_server_url + "/admin/login/")
self.assert_equal_page_title("Log in | Django site admin")
self.assert_in_page_source('<form action="/admin/login/" method="post" id="login-form">')
self.assert_no_javascript_alert()
Firefox + StaticLiveServer示例
from django_tools.selenium.django import SeleniumFirefoxStaticLiveServerTestCase
from django_tools.selenium.geckodriver import firefox_available
@unittest.skipUnless(firefox_available(), "Skip because Firefox is not available!")
class ExampleFirefoxTests(SeleniumFirefoxStaticLiveServerTestCase):
def test_admin_login_page(self):
self.driver.get(self.live_server_url + "/admin/login/")
self.assert_equal_page_title("Log in | Django site admin")
self.assert_in_page_source('<form action="/admin/login/" method="post" id="login-form">')
self.assert_no_javascript_alert()
无StaticLiveServer的测试用例
from django_tools.selenium.chromedriver import SeleniumChromiumTestCase
from django_tools.selenium.geckodriver import SeleniumFirefoxTestCase
也请参阅此处现有的单元测试
设置Web驱动程序
Selenium测试用例需要浏览器和Web驱动程序。
SeleniumChromiumTestCase
和SeleniumFirefoxTestCase
将通过webdriver-manager自动安装Web驱动程序
有一个小的CLI(称为django_tools_selenium
)来检查/安装Web驱动程序,例如
~/django-tools$ poetry run django_tools_selenium install
~/django-tools$ poetry run django_tools_selenium info
Mockup实用工具
创建带有文本的PIL/django-filer图像的占位符,请参阅
用法/测试
模型实例单元测试代码生成器
从现有模型实例生成单元测试代码框架。您可以将此功能用作django manage命令或作为管理操作。
作为管理命令的使用,例如
$ ./manage.py generate_model_test_code auth.
...
#
# pk:1 from auth.User <class 'django.contrib.auth.models.User'>
#
user = User.objects.create(
password='pbkdf2_sha256$36000$ybRfVQDOPQ9F$jwmgc5UsqRQSXxJs/NrZeTLguieUSSZfaSZbMmC+L5w=', # CharField, String (up to 128)
last_login=datetime.datetime(2018, 4, 24, 8, 27, 49, 578107, tzinfo=<UTC>), # DateTimeField, Date (with time)
is_superuser=True, # BooleanField, Boolean (Either True or False)
username='test', # CharField, String (up to 150)
first_name='', # CharField, String (up to 30)
last_name='', # CharField, String (up to 30)
email='', # CharField, Email address
is_staff=True, # BooleanField, Boolean (Either True or False)
is_active=True, # BooleanField, Boolean (Either True or False)
date_joined=datetime.datetime(2018, 3, 6, 17, 15, 50, 93136, tzinfo=<UTC>), # DateTimeField, Date (with time)
)
...
创建用户
django_tools.unittest_utils.user.create_user()
- 创建用户,获取超级用户django_tools.unittest_utils.user.get_super_user()
- 获取第一个现有超级用户
隔离文件系统装饰器/上下文管理器
django_tools.unittest_utils.isolated_filesystem.isolated_filesystem可以作为装饰器或上下文管理器。对于将在当前工作目录中创建文件/目录的测试非常有用,它执行以下操作
- 创建一个新的临时目录
- 将当前工作目录更改为临时目录
- 退出后
- 删除整个临时目录树
例如使用
from django_tools.unittest_utils.isolated_filesystem import isolated_filesystem
with isolated_filesystem(prefix="temp_dir_prefix"):
open("foo.txt", "w").write("bar")
BaseUnittestCase
django_tools.unittest_utils.unittest_base.BaseUnittestCase包含一些底层断言方法
- assertEqual_dedent()
注意:断言方法将在将来迁移到:django_tools.unittest_utils.assertments
!
django_tools.unittest_utils.tempdir包含TempDir
,一个上下文管理类
with TempDir(prefix="foo_") as tempfolder:
# create a file:
open(os.path.join(tempfolder, "bar"), "w").close()
# the created temp folder was deleted with shutil.rmtree()
用法/测试
DjangoCommandMixin
帮助运行shell命令。例如:在单元测试中使用“./manage.py cms check”。
用法/测试
单元测试中的DOM比较
问题:您无法轻松检查例如某些表单输入字段是否在响应中,因为表单渲染使用字典存储所有HTML属性。因此,表单字段属性的顺序未排序且不固定。
解决方案:您需要将响应内容解析为DOM树并比较节点。
我们添加了Gregor Müllegger在GSoC 2011表单渲染分支上的出色工作。您将拥有以下继承自:django_tools.unittest_utils.unittest_base.BaseTestCase的断言方法
- self.assertHTMLEqual() – 比较两个HTML DOM树
- self.assertDOM() – 检查响应中的节点是否存在。
- self.assertContains() – 检查节点在响应中出现的次数为“count”
更多信息示例请参阅./django_tools_tests/test_dom_asserts.py
@set_string_if_invalid() 装饰器
辅助函数,用于检查是否存在缺失的模板标签,通过设置临时变量 'string_if_invalid'
实现,请参阅:https://docs.django.ac.cn/en/1.8/ref/templates/api/#invalid-template-variables
用法示例:
from django.test import SimpleTestCase
from django_tools.unittest_utils.template import TEMPLATE_INVALID_PREFIX, set_string_if_invalid
@set_string_if_invalid()
class TestMyTemplate(SimpleTestCase):
def test_valid_tag(self):
response = self.client.get('/foo/bar/')
self.assertNotIn(TEMPLATE_INVALID_PREFIX, response.content)
您还可以装饰测试方法 ;)
unittest_utils/signals.py
SignalsContextManager
通过 with 语句连接/断开信号回调
unittest_utils/assertions.py
该文件包含一些常用的断言函数
assert_startswith
- 检查测试是否以指定前缀开始。assert_endswith
- 检查文本是否以指定后缀结束。assert_locmem_mail_backend
- 检查当前电子邮件后端是否为内存后端。- {{{assert_language_code() - 检查给定的 language_code 是否在 settings.LANGUAGES 中
assert_installed_apps()
- 检查 settings.INSTALLED_APPS 中的条目assert_is_dir
- 检查给定路径是否为目录assert_is_file
- 检查给定路径是否为文件assert_path_not_exists
- 检查给定路径不存在
加速测试
通过禁用迁移来加速测试运行,例如:
from django_tools.unittest_utils.disable_migrations import DisableMigrations
MIGRATION_MODULES = DisableMigrations()
小型工具
debug_csrf_failure()
显示正常的调试页面,而不是最小化的 csrf 调试页面。更多信息请参阅 DocString:django_tools/views/csrf.py
导入库辅助工具
对现有的 importlib
进行扩展的额外辅助工具,更多信息请参阅源代码:./utils/importlib.py
http 工具
增强 HttpRequest 以获取有关请求的更多信息。更多信息请参阅 DocString:django_tools/utils/http.py
@display_admin_error
开发人员助手,用于在 ModelAdmin.list_display 调用中显示静默错误。请参阅:display_admin_error 在 decorators.py
升级虚拟环境
一个简单的命令行脚本,它为虚拟环境中的每个已安装的包调用 pip install —-upgrade XY
。只需将其复制/符号链接到虚拟环境的根目录并启动即可。
要使用它,而无需安装 django-tools
~/$ cd goto/your_env
.../your_env/$ wget https://github.com/jedie/django-tools/raw/master/django_tools/upgrade_virtualenv.py
.../your_env/$ chmod +x upgrade_virtualenv.py
.../your_env/$ ./upgrade_virtualenv.py
如果 pip 有自己的升级命令,则此脚本将过时。
django_tools.utils.url.GetDict
类似于原始 django.http.QueryDict,但
- urlencode() 不会为空值添加 "=":使用 "?empty" 而不是 "?empty="
- 始终可变
- 输出将按顺序排序(更容易进行测试 ;)
更多信息,请参阅测试:django_tools_tests/test_utils_url.py
SignedCookieStorage
使用 django.core.signing 将信息存储在签名 Cookie 中,因此客户端无法操纵 Cookie 数据。来源/示例
打印 SQL 查询
通过上下文管理器打印使用的 SQL 查询。
例如使用
from django_tools.unittest_utils.print_sql import PrintQueries
# e.g. use in unittests:
class MyTests(TestCase):
def test_foobar(self):
with PrintQueries("Create object"):
FooBar.objects.create("name"=foo)
# e.g. use in views:
def my_view(request):
with PrintQueries("Create object"):
FooBar.objects.create("name"=foo)
输出如下
_______________________________________________________________________________
*** Create object ***
1 - INSERT INTO "foobar" ("name")
VALUES (foo)
-------------------------------------------------------------------------------
SetRequestDebugMiddleware
中间件,用于向请求对象添加 debug bool 属性。更多信息:./debug/README.creole
TracebackLogMiddleware
通过在 process_exception()
上调用 logging.exception() 将堆栈跟踪放入日志中。通过以下方式激活:
MIDDLEWARE_CLASSES = (
...
'django_tools.middlewares.TracebackLogMiddleware.TracebackLogMiddleware',
...
)
FnMatchIps() - 在 INTERNAL_IPS / ALLOWED_HOSTS 中使用 Unix shell-style 通配符
settings.py 例如:
from django_tools.settings_utils import FnMatchIps
INTERNAL_IPS = FnMatchIps(["127.0.0.1", "::1", "192.168.*.*", "10.0.*.*"])
ALLOWED_HOSTS = FnMatchIps(["127.0.0.1", "::1", "192.168.*.*", "10.0.*.*"])
StdoutStderrBuffer()
将 stdout + stderr 重定向到字符串缓冲区。例如:
from django_tools.unittest_utils.stdout_redirect import StdoutStderrBuffer
with StdoutStderrBuffer() as buffer:
print("foo")
output = buffer.get_output() # contains "foo\n"
管理命令
permission_info
列出特定 django 用户的全部权限。(需要将 'django_tools'
添加到 INSTALLED_APPS 中)
例如
$ ./manage.py permission_info
No username given!
All existing users are:
foo, bar, john, doe
$ ./manage.py permission_info foo
All permissions for user 'test_editor':
is_active : yes
is_staff : yes
is_superuser : no
[*] admin.add_logentry
[*] admin.change_logentry
[*] admin.delete_logentry
[ ] auth.add_group
[ ] auth.add_permission
[ ] auth.add_user
...
logging_info
显示所有日志记录器的列表,并标记哪些已在settings.LOGGING中配置。
$ ./manage.py logging_info
nice_diffsettings
类似于django 'diffsettings',但使用美化打印的表示。
$ ./manage.py nice_diffsettings
database_info
仅显示有关所使用数据库和连接的一些信息。
$ ./manage.py database_info
list_models
仅以app_label.ModelName格式列出所有现有模型。在'dumpdata'等操作中很有用。
$ ./manage.py list_models
..所有其他...
存在许多杂项内容。查看源代码,luke!
向后不兼容的更改
旧更改存档在此git历史记录中
v0.51
所有Selenium辅助函数已弃用,请迁移到Playwright ;)
v0.50
已移除旧selenium辅助函数,自v0.43弃用
使所有Selenium WebDriver实例在整个测试会话中持久化。这加快了测试速度并修复了一些Selenium中的错误。
这导致所有测试类的浏览器/WebDriver设置相同!
v0.55
将支持的Django/Python最小版本移动到
- Django 4.1, 4.2, 5.1
- Python 3.11, 3.12
Django兼容性
django-tools | django版本 | python |
---|---|---|
>= v0.56.0 | 4.1, 4.2, 5.1 | 3.11, 3.12 |
>= v0.52.0 | 3.2, 4.0, 4.1 | 3.8, 3.9, 3.10 |
>= v0.50.0 | 2.2, 3.2, 4.0 | 3.8, 3.9, 3.10 |
>= v0.49.0 | 2.2, 3.1, 3.2 | 3.7, 3.8, 3.9 |
>= v0.47.0 | 2.2, 3.0, 3.1 | >= 3.6, pypy3 |
>= v0.39 | 1.11, 2.0 | 3.5, 3.6, pypy3 |
>= v0.38.1 | 1.8, 1.11 | 3.5, 3.6, pypy3 |
>= v0.38.0 | 1.8, 1.11 | 3.5, 3.6 |
>= v0.37.0 | 1.8, 1.11 | 3.4, 3.5 |
>= v0.33.0 | 1.8, 1.11 | 2.7, 3.4, 3.5 |
v0.30.1-v0.32.14 | 1.8, 1.9, 1.10 | 2.7, 3.4, 3.5 |
v0.30 | 1.8, 1.9 | 2.7, 3.4 |
v0.29 | 1.6 - 1.8 | 2.7, 3.4 |
v0.26 | <=1.6 | |
v0.25 | <=1.4 |
(有关pyproject.toml中tox组合的更多信息,请参阅此处)
历史记录
- v0.56.2
- 2024-08-25 - Bugfix: 删除覆盖现有代码的空包
- v0.56.1
- 2024-08-25 - 在测试中使用typeguard
- 2024-08-25 - 使用cli_base update-readme-history
- 2024-08-25 - 通过manageprojects更新
- v0.56.0
- 2024-08-25 - Bugfix:在真实终端中运行本地测试
- 2024-08-25 - 修复CI
- 2023-04-10 - Upgrade:使用managed-django-projec,移除弃用功能,更新支持的版本
- v0.54.0
- 2022-09-15 - Bugfix版本检查
- 2022-08-23 - 将README.creole替换为README.md
- 2022-08-26 - 在CI中运行safety检查
- 2022-08-25 - NEW:SyslogHandler,用于轻松将日志记录到syslog
扩展更早的历史条目...
- v0.53.0
- 2022-08-18 - v0.53.0
- 2022-08-18 - 修复readme
- 2022-08-18 - 修复测试
- 2022-08-18 - 排序和清理run server kwargs
- 2022-08-18 - 修复gitignore
- 2022-08-18 - 修复tox运行
- 2022-08-18 - Bugfix Python 3.8支持
- 2022-08-18 - 精炼run_testserver命令
- 2022-08-18 - 更新测试项目设置
- 2022-08-18 - 修复"database_info"命令和pprint到self.stdout流
- 2022-08-18 - 修复manage.sh通过设置"local"设置
- 2022-08-18 - run-server:不要将stderr输出转换为->使用style
- 2022-08-18 - NEW:MassContextManagerBase,DenyStdWrite + 更新:StdoutStderrBuffer
- v0.52.0
- 2022-08-17 - 代码清理
- 2022-08-17 - 将
AlwaysLoggedInAsSuperUserMiddleware
限制为admin。 - 2022-08-17 - 将
run_testserver
管理命令从django_tools_test_app
移动到django_tools
并对其进行润色。 - 2022-07-02 - 加速CI
- 2022-08-16 - 修复tox和CI
- 2022-08-16 - 更新需求
- 2022-08-12 - 使用Django 3.2、4.0和4.1进行测试
- 2022-08-12 - 修复代码风格
- v0.51.0
- 2022-07-26 - NEW:check_editor_config() + 以v0.51.0版本发布
- 2022-07-26 - 修复错误的编辑器配置
- 2022-07-26 - 在README中添加花哨的图标
- 2022-07-15 - 更新需求
- 2022-07-02 - NEW:Playwright基础Unittest类和登录辅助函数
- 2022-07-02 - DEPRECATE所有Selenium辅助函数
- 2022-07-02 - 使用:codecov/codecov-action@v2
- v0.50.0
- 2022-05-29 - 更新需求
- 2022-05-29 - 修复Makefile
- 2022-05-16 - 将assert_html_snapshot替换为assert_html_response_snapshot
- 2022-05-16 - 修复代码风格
- 2022-04-15 - 更新pythonapp.yml
- 2022-02-05 - 在*.log文件中启用控制台日志输出
- 2022-02-05 - 重构selenium辅助工具,使用webdriver-manager设置webdriver
- 2022-02-05 - 更新publish.py
- 2022-02-05 - 将最大行长度降低到100
- 2022-02-05 - 在github actions中移除linting,因为它通过pytest插件完成
- 2022-01-30 - 更新README
- 2022-01-30 - 使用Python 3.10和Django 4.0扩展测试
- 2022-01-30 - 使用darker作为代码格式化工具
- 2022-01-13 - 修复github actions
- 2022-01-13 - 应用flynt run
- 2022-01-13 - 将flynt设置移动到pyproject.toml中
- v0.49.0
- 2021-11-22 - 重构selenium辅助工具
- 2021-11-22 - 记录找到的可执行文件
- 2021-11-22 - 移除w3c更改
- 2021-11-22 - 将webdriver本地化设置为'en_US.UTF-8'
- 2021-11-22 - 修复#21:在无头模式下设置chrome accept_languages
- 2021-11-21 - 修复测试
- 2021-11-20 - 新功能:模型版本保护
- 2021-11-21 - 更新selenium测试辅助工具
- 2021-11-21 - 更新README
- 2021-11-21 - 重构CI
- 2021-11-21 - 移除Python 3.6
- 2021-11-21 - 更新pythonapp.yml
- 2021-11-21 - 重构设置并将所有项目测试文件移动
- 2021-11-21 - 更新项目urls.py
- 2021-11-21 - 移除迁移测试
- 2021-11-21 - 在call_manage_py()中传递当前环境变量
- 2021-11-20 - 修复测试项目中的bug
- 2021-11-21 - 新功能:AlwaysLoggedInAsSuperUserMiddleware
- 2021-11-21 - 更新README并检查"make"帮助是否始终是最新的
- 2021-11-21 - 修复代码样式并为此创建make目标
- 2021-11-21 - 更新Makefile
- 2021-11-21 - 重构selenium测试辅助工具
- 2021-11-21 - 代码样式
- 2021-11-21 - 复制DesiredCapabilities字典
- 2021-11-21 - 修复make "lint" + "fix-code-style"并运行修复测试
- 2021-11-20 - 修复github上selenium chrome测试的bug
- 2021-11-20 - 修复测试:从快照中移除绝对路径
- 2021-11-20 - 尝试在CI中通过seleniumbase安装chromedriver和geckodriver
- 2021-11-20 - 修复日志消息中的拼写错误
- 2021-11-20 - Django更新:smart_text() -> smart_str()
- 2021-11-20 - 使用快照测试
- 2021-11-20 - 同步README
- 2021-11-20 - 添加"bx_py_utils"并在测试中使用快照
- 2021-11-20 - 更新README.creole
- 2021-11-20 - 更新测试
- 2021-11-20 - 修复isolated_filesystem:它不能作为类装饰器工作!
- 2021-11-20 - 现代化测试项目
- 2021-11-20 - 更新测试
- 2021-11-20 - 添加poetry.lock并更新requirements
- 2021-11-20 - 移动测试
- v0.48.3
- 2020-12-20 - 新功能:ImageDummy().in_memory_image_file()对于例如:通过Django的测试客户端进行POST图像上传很有用
- v0.48.2
- 2020-12-06 - 发布为v0.48.2
- 2020-12-06 - 测试0.48.2rc2
- 2020-12-06 - 处理用户令牌不存在的情况
- 2020-12-06 - 更改"serve_media_app"迁移:为现有用户创建UserMediaTokenModel
- v0.48.1
- 2020-12-06 - 添加.../serve_media_app/migrations/0001_initial.py
- 2020-12-06 - 添加./manage.sh辅助工具
- v0.48.0
- 2020-12-06 - 首先执行'fix-code-style'然后执行'pytest'
- 2020-12-06 - 修复代码样式
- 2020-12-06 - 更新README
- 2020-12-06 - 修复和更新测试
- 2020-12-06 - 在日志输出中添加更多信息
- 2020-12-06 - 在"pytest-randomly"中添加注释
- 2020-12-06 - 在get_filtered_apps()中支持应用程序配置条目
- 2020-12-06 - 修复测试项目urls设置中的bug
- 2020-11-27 - 更新README.md
- 2020-11-27 - 新功能:"Serve User Media File"可重用应用程序
- 2020-11-27 - 新功能:django_tools.unittest_utils.signals.SignalsContextManager
- 2020-11-27 - 修改
ImageDummy
并使text
可选
- v0.47.0
- 2020-11-26 - 代码样式
- 2020-11-26 - 修复测试设置和github actions
- 2020-11-26 - 更新AUTHORS
- 2020-11-26 - 更新.gitignore
- 2020-11-26 - 更新README并设置v0.47.dev0
- 2020-11-26 - 扩展tox envlist,修复覆盖率设置和pytest调用
- 2020-11-26 - 修复DjangoCommandMixin
- 2020-11-26 - 移除LoggingBuffer并更新测试
- 2020-11-26 - 新增:assert_in_logs()
- 2020-11-26 - 删除警告检查(因为外部应用程序的警告)
- 2020-11-26 - force_text -> force_str
- 2020-11-26 - 新增:assert_warnings() 和 assert_no_warnings()
- 2020-11-26 - 修复 test_set_env()
- 2020-11-26 - 使用 os.environ.setdefault
- 2020-11-26 - ugettext -> gettext
- 2020-11-26 - 删除 assertment
- 2020-11-26 - 更新一些针对新 django 版本的 django 导入
- 2020-11-26 - 更新 test_update_rst_readme()
- 2020-11-26 - 更新 pyproject.toml 并移动一些外部元配置文件
- 2020-11-05 - 禁用 fail-fast
- 2020-11-05 - 修复损坏的单元测试
- 2020-11-05 - 忽略非测试文件
- 2020-11-05 - 忽略 doctest 导入错误
- 2020-11-05 - 修复两个导入错误
- 2020-11-05 - 修复版本比较
- 2020-09-06 - 优化:添加 django 3.1 兼容性
- 2020-11-05 - 在 pull_request 事件上触发测试作业
- 2020-11-05 - 修复由于 pytest 已弃用选项导致的损坏的单元测试
- 2020-07-04 - 使用 f-strings
- 2020-07-04 - render_to_response() -> render()
- 2020-07-04 - 更新 README.rst
- 2020-07-04 - 添加 github action 徽章
- 2020-07-04 - 添加 "make update"
- 2020-07-04 - 更新 README.creole
- 2019-04-03 - 通过上传添加文件
- 2019-04-03 - 删除 logo_white.png
- 2019-04-03 - 删除 logo_black.png
- 2019-04-03 - 删除 logo.png
- v0.46.1
- 2020-02-19 - 修复 manage tests
- 2020-02-19 - fixup! 在 SeleniumChromiumTestCase() 中使用 shutil.which()
- 2020-02-19 - 设置 "accept_languages" 并禁用 "headless" 模式
- 2020-02-19 - 在 SeleniumChromiumTestCase() 中使用 shutil.which()
- 2020-02-19 - 新增:"django_tools.middlewares.LogHeaders.LogRequestHeadersMiddleware"
- 2020-02-19 - 修复运行测试项目开发服务器的 bug
- 2020-02-19 - 使用 poetry 中的测试代码合并代码
- 2020-02-19 - 限制更宽松的依赖规范
- v0.46.0
- 2020-02-13 - 更新 README 并发布为 v0.46.0
- 2020-02-13 - 解决在 github 上失败的测试的解决方案...
- 2020-02-13 - WIP:修复 github CI
- 2020-02-13 - +django_tools_tests/test_project_setup.py
- 2020-02-13 - 如果 README 未更新,则不发布
- 2020-02-13 - 在 github CI 上使用 tox-gh-actions
- 2020-02-13 - 在 CI 上启用 linting
- 2020-02-13 - 修复代码风格
- 2020-02-13 - 代码清理:删除 six 东西
- 2020-02-13 - 应用代码风格
- 2020-02-13 - 更新 Makefile
- 2020-02-13 - 应用 pyupgrade
- 2020-02-13 - 更新测试
- 2020-02-13 - Bugfix:不要在 DocTest 中设置 settings.MEDIA_ROOT
- 2020-02-13 - 使用 f-strings
- 2020-02-13 - 更新 selenium 测试
- 2020-02-13 - 更新测试设置
- 2020-02-13 - 删除 "dynamic_site"
- 2020-02-12 - WIP:使用 poetry
- 2020-02-12 - 删除 lxml 并在 html2text() 中使用 bleach.clean()
- 2020-02-12 - 更新 requirements-dev.txt
- v0.45.3
- 2019-08-25 - 发布 v0.45.3
- 2019-08-25 - 在 DjangoCommandMixin 方法中添加 "excepted_exit_code"
- v0.45.2
- 2019-06-25 - 更新测试设置:MIDDLEWARE_CLASSES -> MIDDLEWARE
- 2019-06-25 - 添加:ThrottledAdminEmailHandler
- 2019-06-13 - Bugfix:对 BaseUnittestCase.assertEqual_dedent() 进行重构时引用错误
- v0.45.1
- 2019-04-03 - Bugfix:如果附件是 MIMEImage 实例,则修复 print_mailbox
- 2019-04-01 - 代码清理
- v0.45.0
- 2019-04-01 - 版本 = "0.45.0"
- 2019-04-01 - 更新 README.creole
- 2019-04-01 - bugfix:python 3.5 需要 str()
- 2019-04-01 - +=== OverwriteFileSystemStorage
- 2019-04-01 - 移动 "assert_equal_dedent" 和 "assert_in_dedent"
- 2019-03-30 - 对 assertEqual_dedent 也使用 assert_pformat_equal
- 2019-03-30 - 仅使用 black 格式化代码
- 2019-03-30 - 新增:OverwriteFileSystemStorage
- 2019-03-30 - 新增:assert_pformat_equal
- 2019-03-30 - 使用 python-colorlog
- 2019-03-26 - 新增:{{{print_exc_plus()}}} - 列出所有局部变量的 tracebacks
- 2019-02-21 - 更新 email.py
- 2019-02-21 - 在 unittest_utils.email.print_mailbox 中处理附件/替代项
- v0.44.2
- 2019-01-02 - docstring 中的 typo
- 2019-01-02 - 仅代码格式化
- 2019-01-02 - 修复方案:针对https://github.com/andymccurdy/redis-py/issues/995
- 2019-01-02 - Python3 + 代码格式化
- v0.44.1
- 2019-01-02 - 仅代码格式化
- 2019-01-02 - 不要禁用现有的日志处理器,只需附加缓冲区处理器。
- v0.44.0
- 2018-12-13 - 新功能:{{{django_file = ImageDummy().create_django_file_info_image(text="")}}}
- 2018-12-13 - mockup.ImageDummy:移除旧API + 使其无需django-filer即可使用
- v0.43.2
- 2018-12-11 - 错误修复 Selenium 重构:使用具有相同功能性的类,如果旧用法位置被使用。
- v0.43.1
- 2018-12-11 - v0.43.1 - 错误修复:Selenium 测试用例:在测试运行后清除 window.localStorage
- v0.43.0
- 2018-12-11 - 新功能:Selenium 辅助工具以访问 window.localStorage
- 2018-12-11 - 分离 selenium 测试用例:带有和不带有 Django StaticLiveServerTestCase
- 2018-12-11 - 仅代码清理
- 2018-12-11 - 错误修复 test_filter_and_log_warnings_create_warning()
- 2018-12-11 - 移动 selenium 辅助工具
- 2018-12-11 - 添加 DeprecationWarning 装饰器
- v0.42.4
- 2018-10-12 - 错误修复:一些身份验证后端需要请求对象(例如:django-axes)
- 2018-10-12 - 仅代码清理
- v0.42.3
- 2018-10-10 - v0.42.3
- 2018-10-10 - 更新旧测试
- 2018-10-10 - 新增:assert is dir/file 和 assert_path_not_exists
- v0.42.2
- 2018-09-18 - 新功能:assert_installed_apps() - 检查 settings.INSTALLED_APPS 中的条目
- 2018-09-18 - +DeprecationWarning
- v0.42.1
- 2018-09-17 - 发布 v0.42.1
- 2018-09-17 - 新功能:django_tools.unittest_utils.assertments.assert_language_code
- v0.42.0
- 2018-09-07 - 更新测试
- 2018-09-07 - v0.42.0
- 2018-09-07 - 移动管理命令 "list_models" 和 "nice_diffsettings"
- 2018-09-07 - 更新 README
- 2018-09-07 - 从 README 中删除旧的不兼容更改条目
- 2018-09-07 - 错误修复电子邮件测试
- 2018-09-07 - 移除所有 celery 辅助工具
- 2018-09-06 - 创建 logging_info.py
- 2018-09-05 - +print_celery_info()
- 2018-09-05 - fixup! 检查任务是否异步运行,通过检查返回的 obj 是否为 AsyncResult
- 2018-09-05 - 默认更改为非急切模式
- 2018-09-05 - 检查任务是否异步运行,通过检查返回的 obj 是否为 AsyncResult
- 2018-09-05 - test_task() -> on_message_test_task()
- 2018-09-05 - 使用 async_result.wait() with timeout 作为针对:https://github.com/celery/celery/issues/5034 的修复方案
- 2018-09-05 - +note about https://github.com/celery/celery/issues/5034
- 2018-09-05 - 针对针对 https://github.com/celery/celery/issues/5033 的修复方案
- 2018-09-05 - WIP:celery 任务单元测试辅助工具
- 2018-09-05 - pluggy>0.7 for https://github.com/pytest-dev/pytest/issues/3753
- v0.41.0
- 2018-08-28 - v0.41.0
- 2018-08-28 - 更新测试项目和测试
- 2018-08-28 - 添加测试断言
- 2018-08-28 - 删除过时的测试
- 2018-08-28 - 新增:unittest_utils/assertions.py
- 2018-08-28 - 删除 @task_always_eager() 装饰器。
- v0.40.6
- 2018-08-28 - v0.40.6
- 2018-08-28 - 代码风格更新
- 2018-08-28 - 错误修复 @task_always_eager() 装饰器
- v0.40.5
- 2018-08-27 - 发布 0.40.5
- 2018-08-27 - 错误修复:使用给定的 manage.py 文件名
- v0.40.4
- 2018-08-21 - 发布 v0.40.4
- 2018-08-21 - +test default value +test delete value
- 2018-08-21 - 更新 README.creole
- 2018-08-21 - 新增:django_tools.debug.delay
- v0.40.3
- 2018-07-18 - 更新 README
- 2018-07-18 - 增强 selenium 测试用例
- v0.40.2
- 2018-07-04 - 发布 v0.40.2
- 2018-07-04 - 修复测试,请参阅:https://travis-ci.org/jedie/django-tools/jobs/400136378
- 2018-07-04 - 如果驱动器不可用,则跳过自己的 selenium 测试
- 2018-07-04 - 错误修复 selenium 测试用例 if driver is None
- 2018-07-04 - 代码清理
- 2018-07-04 - 添加 yapf 风格配置
- 2018-07-04 - 更新 django API 变更
- v0.40.1
- 2018-06-28 - 修复 selenium 测试用例中可执行文件找不到的 bug。
- 2018-06-18 - 也添加 django 缺陷票据链接。
- v0.40.0
- 2018-06-14 - +== 尝试
- 2018-06-14 - 配置 django 需求
- 2018-06-14 - 将示例代码添加到 README 中
- 2018-06-14 - +chromium_available() 和 firefox_available()
- 2018-06-14 - 更新 DocTests
- 2018-06-14 - "executable" 中的错别字
- 2018-06-14 - 尝试不使用 "MOZ_HEADLESS=1",因为 "headless" 已在此设置
- 2018-06-14 - 清理
- 2018-06-14 - fixup! 修复 travis CI:安装 geckodriver
- 2018-06-14 - fix travis CI:安装 geckodriver
- 2018-06-14 - fixup! 尝试修复 travis 和 chromedriver
- 2018-06-14 - +SeleniumFirefoxTestCase 和更多文档
- 2018-06-14 - try to fix travis and chromedriver
- 2018-06-13 - fixup! 尝试找到 webdriver 可执行文件
- 2018-06-13 - 尝试找到 webdriver 可执行文件
- 2018-06-13 - +django-debug-toolbar
- 2018-06-13 - 添加 selenium 测试用例,修复测试项目和测试
- 2018-06-13 - 只将 admindocs 和 flatpages 添加到测试项目设置中
- 2018-06-13 - 更好的错误消息
- v0.39.6
- 2018-05-04 - README
- 2018-05-04 - 不要隐藏 Autofields
- 2018-05-04 - 代码风格清理
- v0.39.5
- 2018-04-24 - +nargs="?"
- 2018-04-24 - yield 排序
- 2018-04-24 - 添加 "admin_tools"
- 2018-04-24 - 更新 README.creole
- 2018-04-24 - 新增:模型单元测试代码生成器作为管理动作和管理命令
- 2018-04-24 - 更新 pytest 并使用新的 --new-first
- 2018-04-06 - 澄清 CutPathnameLogRecordFactory 的作用
- v0.39.4
- 2018-04-06 - 新增:FilterAndLogWarnings 和 CutPathnameLogRecordFactory
- v0.39.3
- 2018-03-22 - 在 get_filtered_permissions 中添加 kwarg 'exclude_actions'
- v0.39.2
- 2018-03-22 - 新增:ParlerDummyGenerator 和 iter_languages
- v0.39.1
- 2018-03-19 - 忽略 'pypy3-django111' 失败
- 2018-03-19 - 删除过时的代码
- 2018-03-19 - 从 SendMailCelery().send() 返回结果
- 2018-03-19 - +test_SendMailCelery_more_mails()
- 2018-03-19 - +django_tools.unittest_utils.email.print_mailbox()
- 2018-03-11 - 更新 setup.py
- v0.39.0
- 2018-03-02 - 使用 django 2.0 运行测试,而不是 django 1.8
- 2018-03-02 - 修复 python <=3.5 的 bug
- 2018-03-02 - django_tools/unittest_utils/{celery.py => celery_utils.py}
- 2018-03-02 - 更新历史
- 2018-03-02 - +Isolated Filesystem 装饰器 / 上下文管理器
- 2018-02-19 - +.pytest_cache
- 2018-02-19 - 更新测试
- 2018-02-19 - 删除 Py2 代码
- v0.38.9
- 2018-02-05 - 降低日志级别 "error" -> "debug" 在缺少权限时
- v0.38.8
- 2018-02-05 - 发布 v0.38.8
- 2018-02-05 - bugfix 比较链接
- 2018-02-05 - 使用 from celery import shared_task 替代 djcelery_transactions
- 2018-02-05 - +skip_missing_interpreters = True
- 2018-01-19 - 在 get_filtered_permissions() 中找不到应用标签时提供更好的错误信息
- v0.38.7
- 2018-01-15 - 向 SendMailCelery 添加缺失的参数(如 "attachments","cc" 等)
- v0.38.6
- 2018-01-08 - 更新 README
- 2018-01-08 - 将 POST 数据添加到浏览器调试
- 2018-01-08 - 更好的排序
- 2018-01-08 - 从模板列表中删除重复条目
- 2018-01-03 - +./manage.py clear_cache
- v0.38.5
- 2018-01-02 - +test_wrong_messages()
- 2018-01-02 - NEW: assertMessages()
- v0.38.4
- 2017-12-28 - Bugfix 在现有用户上附加用户组
- v0.38.3
- 2017-12-28 - 也删除权限
- v0.38.2
- 2017-12-27 - add: ./manage.py update_permissions
- 2017-12-27 - +Helper 以参数启动 pytest
- 2017-12-27 - 如果找不到权限,则使用 log.exception()
- v0.38.1
- 2017-12-21 - 更新 setup.py
- 2017-12-20 - + coveralls
- 2017-12-20 - 清理
- 2017-12-20 - 使用 pypy3 和 -tox-travis
- 2017-12-20 - 重构 travis/tox/pytest
- 2017-12-20 - 不要使用不支持的 django 版本进行测试
- 2017-12-20 - 更新 travis/tox 配置并尝试使用更多 django 版本进行测试
- 2017-12-20 - 修复测试,见
- 2017-12-20 - 更新 .travis.yml
- v0.38.0
- 2017-12-19 - 使用 python3
- 2017-12-19 - +test_get_or_create_user_and_group()
- 2017-12-19 - 使用 python 3.5 和 3.6 进行测试
- 2017-12-19 - 更新 README
- 2017-12-19 - 对 https://github.com/travis-ci/travis-ci/issues/4794 的工作方案
- 2017-12-19 - 分离用户和组创建代码
- 2017-12-19 - +get_or_create_user_and_group()
- 2017-12-14 - +BaseUnittestCase.get_admin_add_url()
- 2017-12-13 - 修复测试错误
- 2017-12-13 - 新功能:BaseUnittestCase.get_admin_change_url()
- 2017-12-13 - 如果 print_filtered_html: 打印使用的模板
- 2017-12-12 - 新功能:BaseUnittestCase.assert_startswith() 和 BaseUnittestCase.assert_endswith()
- v0.37.0
- 2017-12-08 - +print_filtered_html
- 2017-12-08 - 将 "dir" 参数添加到 debug_response()
- 2017-12-07 - 统一权限排序
- 2017-12-07 - 总是使用用户.has_perm(): "." 的权限格式
- 2017-12-07 - 新功能:get_filtered_permissions() 和 pprint_filtered_permissions()
- 2017-12-05 - 修复错误 TypeError: 期望字符串或字节类对象
- 2017-12-05 - 修复 ALLOWED_HOSTS 支持
- 2017-12-05 - 为 django_tools.settings_utils.FnMatchIps 添加测试
- 2017-12-05 - 将 InternalIps 重命名为 FnMatchIps 并使其可用于 ALLOWED_HOSTS
- 2017-12-04 - 添加 DocString
- 2017-12-04 - 跳过对 python v2 的官方支持(从文本矩阵中删除)
- 2017-12-04 - 尚未测试 django 2.0
- 2017-12-04 - fixup! +on_delete
- 2017-12-04 - +on_delete
- 2017-12-04 - 重构测试用户代码
- 2017-12-01 - 新功能:./manage.py permission_info
- 2017-11-22 - 修复 Py2
- 2017-11-22 - 更新 README
- 2017-11-22 - 创建 coverage html 报告
- 2017-11-22 - 修复/增强权限功能
- 2017-11-22 - sqlite 的工作方案
- 2017-11-22 - 在 DEBUG 模式下如果权限不存在则引发 AssertionError
- v0.36.0
- 2017-11-20 - +author_email
- 2017-11-20 - 也调用 "./setup.py check"
- 2017-11-20 - 如果 "publish" 命令运行则引发错误
- 2017-11-20 - 更新 "./setup.py publish" 代码
- 2017-11-20 - 更新 README.creole
- 2017-11-20 - 修复 ModelPermissionMixin 并添加测试
- 2017-11-20 - 修复 DocTests
- 2017-11-17 - 完全停用动态站点测试,见
- 2017-11-17 - 修复 TestUserFixtures() 比较
- 2017-11-17 - 修复 TestPermissions,见
- 2017-11-17 - 统一路径在断言之前,见
- 2017-11-17 - fixup! 修复 "database_info" 测试
- 2017-11-17 - 修复 "database_info" 测试
- 2017-11-17 - 显示 qslite 模块/lib 版本,也。
- 2017-11-17 - 添加 codecov.io 徽章
- 2017-11-17 - +DocString 提示
- 2017-11-17 - 标记 "Dynamic SITE_ID middleware" 为不维护
- 2017-11-17 - 更新 .travis.yml
- 2017-10-20 - 新功能:"database_info" manage 命令
- 2017-10-06 - 修复 'module' 对象在 Python < v3.2 中没有 'getLogRecordFactory' 属性的错误
- 2017-10-06 - 修复错误 https://travis-ci.org/jedie/django-tools/jobs/284216389
- 2017-10-06 - 尝试通过清除缓存来修复动态站点?!
- 2017-10-06 - 添加 django_tools.unittest_utils.user.user_fixtures()
- 2017-10-06 - 更好的日志输出
- 2017-10-04 - 修复 ImageDummy.draw_centered_text() 如果文本是多行的话:(
- 2017-09-28 - "migrate --list" 在 django 1.10 中已被移除
- 2017-09-28 - 添加一些基本测试
- 2017-09-28 - 添加 isort 配置
- 2017-09-28 - 修复 editorconfig: 双重配置
- v0.35.0
- 2017-09-26 - 重构 mockup 图片创建
- v0.34.0
- 2017-08-21 - 修复 mockup.create_pil_image: 创建的图像大小错误;)
- 2017-08-17 - 使用 django_tools.unittest_utils.user.create_user()
- 2017-08-17 - 通过 UserCreationForm 创建测试用户以验证值
- 2017-08-08 - 修复错误:用户名不应包含空格 ;)
- v0.33.0
- 2017-07-11 - 更新 render_template_file() 以支持 Django v1.11
- 2017-07-11 - 修复 travis
- 2017-07-11 - 仅针对 Django 1.8TLS 和 1.11TLS 运行测试
- 2017-07-11 - README, AUTHORS 和版本设置为 v0.32.15
- 2017-07-07 - 添加对新式中间件的支持。
- 2017-07-03 - 新特性:django_tools.utils.request.create_fake_request()
- 2017-07-03 - +install_requires "lxml"
- 2017-06-30 - 新特性:django_tools.utils.html_utils.html2text()
- 2017-06-22 - 修复 ModelPermissionMixin 并在 DocString 中添加示例
- 2017-06-21 - WIP:ModelPermissionMixin
- v0.32.14
- 2017-06-14 - 由 setup.py 安装
- 2017-06-14 - 对于 Python 2 需要 'mock' 回退 ;)
- v0.32.13
- 2017-05-24 - 添加使用的要求文件 ;)
- 2017-05-24 - 更新 editorconfig
- 2017-05-24 - 删除一些测试运行警告并清理
- v0.32.12
- 2017-05-04 - +unicode_literals
- 2017-05-04 - 修复 Python 2 的测试
- 2017-05-04 - 新特性:self.assertIn_dedent()
- v0.32.11
- 2017-05-02 - 重构
- v0.32.10
- 2017-05-02 - 删除旧的 PyDev 配置
- 2017-05-02 - 移动 版本
- 2017-05-02 - 清理 README
- 2017-05-02 - 更新 README.creole
- 2017-05-02 - 确保 manage.py 可执行
- 2017-05-02 - 更新元文件
- 2017-05-02 - +django_tools.mail
- 2017-04-25 - 如果不存在用户,则为 IndexError ;)
- 2017-03-23 - 添加 README
- v0.32.9
- 2017-03-21 - 修复测试:排除行号 ;)
- 2017-03-21 - 添加 "模板不存在" 测试
- 2017-03-21 - fixup! 修复 TemplateDoesNotExist 被抛出的错误
- 2017-03-21 - 修复 TemplateDoesNotExist 被抛出的错误
- v0.32.8
- 2017-03-16 - 修复错误:在异常后删除请求
- 2017-03-16 - +=== django_tools.template.loader.DebugCacheLoader
- 2017-03-16 - 修复单元测试
- 2017-03-16 - 不设置最大版本号
- 2017-03-16 - 清理
- 2017-03-16 - 添加调试模板加载器,它将模板名称添加为 html 注释
- 2017-03-15 - 更新临时文件前缀并清理
- v0.32.7
- 2017-03-10 - + django_tools.permissions
- 2017-03-10 - 清理
- 2017-03-06 - 在测试中使用:unittest_utils.user.create_user()
- 2017-03-03 - +=== 创建用户
- 2017-03-03 - 新特性:django_tools.unittest_utils.user
- v0.32.6
- 2017-02-22 - 设置 CELERY_EAGER_PROPAGATES_EXCEPTIONS=True,也是如此
- v0.32.5
- 2017-02-10 - 将 'template_name' 添加到 'assertResponse'
- 2017-02-10 - 添加 assertResponse() 测试
- v0.32.4
- 2017-02-01 - 测试 "创建用户"
- 2017-02-01 - 修复错误:在测试用户上设置活动标志
- 2017-01-25 - 在每种情况下都不起作用,但已经工作,请参阅
- v0.32.3
- 2017-01-25 - 仅作为启动 pytest 的辅助工具
- 2017-01-25 - +@task_always_eager() 装饰器
- 2017-01-25 - django-filer v1.2.6 已发布
- 2017-01-25 - 修复与 python v2 的导入错误
- 2017-01-25 - 添加单元测试辅助 '@task_always_eager()'
- 2017-01-25 - 修复测试
- 2017-01-25 - 将 TemplateInvalidMixin 重构为 @set_string_if_invalid() 装饰器
- 2017-01-25 - +TemplateInvalidMixin
- 2017-01-25 - 新特性:TemplateInvalidMixin
- 2017-01-19 - 修复 BrowserDebug 中的 UnicodeDecodeError
- v0.32.2
- 2017-01-13 - 链接到测试文件
- 2017-01-13 - 新特性:django_tools.utils.url.GetDict
- v0.32.1
- 2016-12-29 - +TracebackLogMiddleware
- v0.32.0
- 2016-12-19 - 新特性:django_tools.template.render.render_template_file
- 2016-12-19 - 拼写错误
- 2016-12-09 - 空格清理
- 2016-12-09 - + @display_admin_error
- 2016-12-08 - 更改为 app_label.ModelName 格式
- 2016-12-08 - +manage 命令:nice_diffsettings & list_models
- 2016-12-08 - +cov
- 2016-12-08 - 更新测试
- 2016-12-08 - 运行 pytest
- 2016-12-08 - 删除 doctest + 清理
- 2016-12-08 - 将 doctests 移动到 unittests
- 2016-12-08 - 删除过时内容
- 2016-12-07 - 关于 pytest
- 2016-12-07 - WIP:使用 pytest-django
- v0.31.0
- 2016-11-03 - 移动测试
- 2016-11-03 - 对 https://github.com/divio/django-filer/issues/899 的解决方案
- 2016-11-03 - 更新 .travis.yml
- 2016-11-03 - 修复测试:提供的域名不符合RFC 1034/1035规范
- 2016-11-03 - 添加Mockup utils以创建包含文本的假PIL/django-filer图像
- 2016-10-28 - 修复测试
- v0.30.4
- 2016-10-27 - 增强 DjangoCommandMixin
- v0.30.3
- 2016-10-27 - 添加 requirements-dev.txt
- 2016-10-27 - .../django-tools $ tox
- 2016-10-27 - 添加 DjangoCommandMixin
- 2016-10-27 - 添加 django_tools.unittest_utils.django_command
- v0.30.2
- 2016-10-05 - 修复Python 2兼容性问题
- 2016-09-13 - 更新语言分类器以显示对Python 3的支持
- v0.30.1
- 2016-08-26 - 永久覆盖
- 2016-08-26 - 更新README
- 2016-08-26 - 修复针对django v1.10的单元测试
- 2016-08-26 - 修复tox/travis设置
- 2016-08-26 - 在travis中使用tox
- 2016-08-26 - v0.30.1添加'DisableMigrations'
- v0.30.0
- 2016-04-27 - v0.30.0
- 2016-04-27 - 更新来源
- 2016-04-27 - 添加naegelyd
- 2016-04-04 - 移除未使用的django.utils.unittest导入
- 2016-04-04 - 回滚“添加flake8到本地和Travis CI测试过程”
- 2016-04-04 - 在tox文件中使用Django版本范围
- 2016-04-02 - 将Python 3.4添加到tox envlist
- 2016-04-02 - 确保setUpClass和tearDownClass调用super方法
- 2016-04-02 - 更新Django 1.9的SQL测试
- 2016-04-02 - 使用Python的importlib而不是Django的
- 2016-04-02 - 使用与Django 1.9兼容的缓存访问器
- 2016-04-02 - 仅使用Python的logging模块而不是django.utils.log
- 2016-04-02 - 忽略flake8中的raw_input引用
- 2016-04-02 - 仅在使用Python 2时引用raw_input
- 2016-04-02 - 使用Python 3兼容的open()打开文件进行写入
- 2016-04-02 - 使用Python 3兼容的sort关键字参数
- 2016-04-01 - 更新版本到0.30.0
- 2016-04-01 - 将flake8添加到本地和Travis CI测试过程
- 2016-04-01 - 如警告消息所示,重定向stdout和stderror
- 2016-04-01 - 限制支持的Django版本为1.8和1.9
- 2016-04-01 - 修复filemanage子目录测试
- 2016-04-01 - 从基础URL和剩余URL构造绝对URL
- 2016-04-01 - 移除不必要的rest_path赋值
- 2016-04-01 - 使用模块而不是/Users/donald/Sites/django-tools来检索组名
- 2016-04-01 - 修复并删除损坏的BaseFilesystemBrowser测试
- 2016-04-01 - 使用self.absolute_path而不是缺失的self.abs_path
- 2016-04-01 - 添加tox文件
- 2016-04-01 - 将coverage_html添加到.gitignore
- 2016-04-01 - 忽略PyDev IDE文件
- 2016-02-29 - 更新README.creole
- v0.29.5
- 2015-08-11 - 添加@python_2_unicode_compatible
- v0.29.4
- 2015-08-11 - 更新来源
- 2015-08-11 - --source=django-tools
- 2015-08-11 - 删除调试打印
- 2015-08-10 - TODO:所有都应该工作!
- 2015-08-10 - 加速测试
- 2015-08-10 - 不使用SimpleTestCase混合
- 2015-08-10 - 简化运行测试的解决方案
- 2015-08-10 - https://docs.travis-ci.cn/user/migrating-from-legacy/
- 2015-08-10 - 跳过在django 1.6中运行的测试
- 2015-08-10 - 在单元测试中关闭日志记录
- 2015-08-10 - 安装最新小版本号的django
- 2015-08-10 - 升级pip并查看将安装哪个django版本
- 2015-08-10 - 修复的bug
- 2015-08-10 - 修复针对django 1.6的一些单元测试导入
- 2015-08-10 - 修复旧django版本导入和清理
- 2015-08-10 - 国家代码将更改
- 2015-08-10 - 使用django 1.6运行测试
- 2015-08-10 - 更新旧django版本的utils.http并添加单元测试
- 2015-08-10 - 修复在旧django版本中运行测试的bug
- 2015-08-10 - 修复旧django版本的bug
- 2015-08-10 - 删除旧google链接
- 版本0.29.3
- 2015-08-08 - 修正拼写和语法错误
- 2015-08-08 - 将自己添加为作者,针对https://github.com/jedie/django-tools/pull/7
- 2015-08-07 - 修复测试名称中的奇怪大写
- 2015-08-07 - 修复bytes转str以兼容Python 3
- 2015-08-07 - 提升版本以反映更改的行为
- 2015-08-07 - 修复在处理响应时移除_thread_locals.request变量导致的失败的测试
- 2015-08-07 - 添加在视图中引发异常时的失败的测试
- 2015-08-07 - 添加在请求-响应周期完成后清除_thread_locals.current_request的失败的测试
- 2015-08-07 - 修复文档中的错误
- 2015-07-02 - +donation
- 2015-06-19 - 代码清理
- 版本0.29.2
- 2015-06-19 - 发布版本0.29.2
- 2015-06-19 - 在每个情况下都不起作用 :(:
- 2015-06-17 - 添加QueryLogMiddleware - TODO: 测试它!
- 2015-06-17 - 使用现有的assertContains / assertNotContains
- 2015-06-17 - 文档字符串中的错误
- 2015-06-17 - 检查用户是否存在并引发有用的消息
- 2015-06-17 - 0.29.2.dev0
- 2015-06-17 - 更好地渲染
- 版本0.29.1
- 2015-06-17 - 将StdoutStderrBuffer()添加到README中并发布为v0.29.1
- 2015-06-17 - 添加指向github比较视图的链接
- 2015-06-16 - 修复Py2和Py3的bug
- 2015-06-16 - 如果使用django 1.8,则修复bug: SELECT COUNT(%s) AS...
- 2015-06-16 - 在PrintQueries中使用CaptureQueriesContext并添加unittest
- 2015-06-16 - 接受正在运行的子集的unittests
- 2015-06-16 - +example
- 2015-06-10 - 使用twine上传
- 2015-06-10 - WIP:使用'twine'上传到PyPi
- 2015-06-10 - 添加StdoutStderrBuffer()
- 2015-06-10 - 删除过时的代码
- 版本0.29.0
- 2015-06-08 - 临时:禁用DocTests
- 2015-06-08 - 删除非ASCII字符
- 2015-06-08 - 修复py2的doctest
- 2015-06-08 - 在Py2和Py3中工作
- 2015-06-08 - 删除未使用的DocTests(存在unittests)
- 2015-06-08 - 运行DocTests,但当前使用unittest.expectedFailure()
- 2015-06-08 - 在BaseFilesystemBrowser中使用ExistingDirValidator
- 2015-06-08 - +BaseUnittestCase和+TempDir
- 2015-06-08 - 修复导入错误
- 2015-06-08 - 修复Py2的bug
- 2015-06-08 - 在README中添加+SignedCookieStorage
- 2015-06-08 - ClientCookieStorage -> SignedCookieStorage
- 2015-06-08 - 测试GetFilteredApps
- 2015-06-08 - 在BaseFilesystemBrowser中捕获更多的目录遍历攻击
- 2015-06-08 - 修复缺少导入的错误
- 2015-06-08 - +repo_token
- 2015-06-08 - WIP:重构测试
- 2015-06-08 - WIP:travis,coveralls,landscape
- 2015-06-08 - 更新.gitignore
- 2015-03-27 - 添加InternalIps() - Unix shell-style wildcards in INTERNAL_IPS
- 2015-03-04 - 修复dynamic_site在django 1.7中的bug
- 2015-02-19 - 为unittests添加SECRET_KEY
- 2015-02-19 - 如果使用UpdateInfoBaseModel,则修复“django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.”的bug
- 2015-02-12 - 新版本号,因为PyPi压力
- 版本0.26.1
- 2015-02-12 - 解决导入循环的问题
- 版本0.26.0
- 2015-02-11 - 发布为v0.26.0
- 2015-02-11 - 一些Python 2和Python 3兼容性修复
- 2015-02-11 - 仅记录错误,而不是引发AssertionError
- 2014-10-02 - WIP:仅运行2to3
- 2014-10-02 - "Django>=1.5,<1.8"
- 2014-10-02 - WIP:仅添加
导入 - 2014-10-02 - 更新setup.py
- 2014-04-14 - 更新models.py
- 2013-11-18 - 更新README
- 2013-11-18 - 如果没有指定编码,则回退到"utf-8"
- 2013-11-12 - 更新README.creole
- 2013-07-23 - from django.conf.urls.defaults import... -> from django.conf.urls import...
- 2013-07-19 - 在setup.py中添加requires "Django>=1.5,<1.6"
- 2013-07-19 - 更新 django 1.5 的 URLValidator2:移除了 verify_exists,请参阅 https://github.com/django/django/commit/9ed6e08ff99c18710c0e4875f827235f04c89d76
- 2013-07-19 - 将日志信息移动/添加到 README 文件中
- 2012-10-23 - 修正 README 文件
- 2012-10-23 - 更好的示例
- 2012-08-31 - 错误的 URL
- 2012-08-31 - 更新 DocString
- 2012-08-31 - 分割联系信息
- v0.25.0
- 2012-08-28 - v0.25 - SmoothCacheBackends API 更改:将 cache.clear() 重命名为 cache.smooth_update()
- v0.24.10
- 2012-08-24 - v0.24.10:* 添加 SmoothCacheBackends * 将 AutoUpdateFileBasedCache 设置为弃用
- 2012-08-24 - 默认禁用日志
- 2012-08-24 - 如果缓存条目不存在,更好的解决方案。
- 2012-08-24 - 禁用调试
- 2012-08-24 - 恢复到保存方法
- v0.24.8
- 2012-08-24 - 发布 v0.24.8
- 2012-08-23 - 尚未发布
- 2012-08-23 - 存储有关缓存使用状态的某些信息。
- 2012-08-22 - v0.24.8.pre:添加 SetRequestDebugMiddleware
- 2012-08-21 - * 添加站点缓存中间件 * 添加导入库助手
- v0.24.6
- 2012-08-21 - 将文件管理库从 PyLucid 移动:https://github.com/jedie/PyLucid/tree/d825cf73c8bb0005ff3a00721a5dae9c595c2420/pylucid_project/filemanager
- 2012-08-07 - 更新 README.creole
- 2012-08-06 - 添加 Print SQL Queries 上下文管理器。
- 2012-07-26 - 在变更列表中添加一些日期
- 2012-07-26 - 由于副作用(例如:用户克隆仓库且未安装过滤器)而从版本字符串中删除日期
- 2012-07-26 - 如果日期不存在,忽略错误
- 2012-07-25 - * "硬编码" 版本号中的提交者日期 * 查看:https://github.com/jedie/django-tools/issues/1
- 2012-07-10 - Split UpdateInfoBaseModel(): 因此,您只能设置 "createtime"、"lastupdatetime" 或 "createby"、"lastupdateby" 或两者
- 2012-06-26 - 我们在 PyLucid CMS 中使用它。添加有关限制的说明。
- 2012-06-12 - * 添加对 limit_to_usergroups 的 unittests * 添加测试项目。TODO:将其用于所有测试
- 2012-06-12 - 在 BaseTestCase 中添加 create_user() 和 create_testusers()
- 2012-06-12 - 在 UsergroupsModelField() 中添加普通用户
- 2012-06-12 - 在 UsergroupsModelField() 中修复错误
- 2012-06-04 - 修复错误:错误的变量名 :(
- 2012-05-31 - 开始 v0.24
- 2012-05-31 - 不要使用 auto_now_add 和 auto_now
- 2012-05-31 - * 更新 DocStrings * 添加信息:SQLite 自 2.0(自 2001 年)起支持 UNIQUE * 首先使用新的 settings.DATABASES 方案
- 2012-05-14 - 更新链接(用于 ReSt)
- 2012-05-09 - * 仅当 settings.USE_DYNAMIC_SITE_MIDDLEWARE == True 时执行初始操作 * 如果 FALLBACK_SITE_ID 不存在,提供更好的反馈。
- 2012-05-03 - v0.23.0 - 在 django_tools.utils.client_storage 中使用 django 1.4 的加密签名工具
- 2012-04-24 - TODO:使用 https://docs.django.ac.cn/en/1.4/topics/signing/ !
- 2012-04-24 - "soc2011 form-rendering" 已合并到 django v1.4:assertContains() -> https://docs.django.ac.cn/en/1.4/topics/testing/#django.test.TestCase.assertContains assertHTMLEqual() -> https://docs.django.ac.cn/en/1.4/topics/testing/#django.test.SimpleTestCase.assertHTMLEqual
- 2012-04-24 - 添加来自 https://github.com/jedie/django-tools/commit/9e984e09399644371a8e489b360a2ff8f83bd267 的变更信息
- 2012-04-24 - * v0.22.0 ** 添加 static_path.py,它用于 settings.STATIC_ROOT。** 旧 media_path.py(用于 settings.MEDIA_ROOT)已弃用,并将在未来删除。
- 2012-04-23 - 支持旧的 django 和新的 DATABASE 设置语法
- 2012-01-25 - 更新 readme 示例
- 2012-01-25 - Dynamic Site 中的错误修复
- 2012-01-24 - 小型 readme 更新
- 2012-01-24 - 更新 readme
- 2012-01-24 - * v0.21.0beta ** 新功能:站点别名功能 ** 将 'DynamicSiteMiddleware' 中间件改为独立应用(不兼容更改:如果使用旧版的 DynamicSiteMiddleware,请更改设置。)
- 2012-01-24 - 添加 PyDev 项目文件,以便在 eclipse/aptana studio 中更容易导入
- 2012-01-09 - 添加 未测试 和实验性的 "自动更新" 缓存后端。在此讨论德语:[链接](http://www.python-forum.de/viewtopic.php?f=7&t=28227)
- 2012-01-06 - 更新 README/版本字符串
- 2012-01-06 - NEW: debug_csrf_failure():显示常规调试页面而不是最小 csrf 调试页面。
- 2012-01-04 - 示例中的更好解决方案。
- 2012-01-04 - * 修复了 fallback ID 的错误:操作系统环境变量始终是字符串 * 在单元测试中启用日志记录 * 添加有关单元测试的说明
- 2012-01-02 - 拼写错误
- v0.20.0
- 2012-01-02 - 将版本设置为 v0.20.0
- 2012-01-02 - 将 DynamicSiteMiddleware 添加到 README
- 2012-01-02 - 使用日志记录
- 2012-01-02 - * 中间件必须通过 settings.USE_DYNAMIC_SITE_MIDDLEWARE = True 激活 * 取消调试打印 * 代码清理
- 2012-01-01 - 代码清理
- 2011-12-29 - NEW:动态站点 ID - 尚在实验阶段!
- 2011-10-09 - 清理
- 2011-10-09 - 添加 middlewares/ThreadLocal.py
- 2011-09-26 - 添加 south 检查规则
- 2011-09-26 - 修复 django_tools.utils.messages.StackInfoStorage 中的错误
- 2011-09-23 - 为 LanguageCodeModelField 和 jQueryTagModelField 添加一些 south 检查规则
- 2011-09-13 - 如果无法创建匿名用户的消息,则回退,因为未使用 django.contrib.messages 中间件。
- 2011-09-07 - 为 [链接](http://bugs.python.org/file22767/hp_fix.diff) 添加修复,用于 [链接](https://github.com/gregmuellegger/django/issues/1)
- 2011-09-12 - 修复错误
- 2011-09-06 - 发布为 v0.19.4
- 2011-09-06 - 更好的 template.filters.human_duration() 解决方案
- 2011-09-06 - 修复 template.filters.chmod_symbol() 中的错误
- 2011-08-31 - 自 python-creole 0.8.1 以来发生的变化,请参阅:[链接](https://code.google.com/p/python-creole/wiki/UseInSetup)
- 2011-08-30 - 更新 README
- 2011-08-26 - 更好的 setup.long_description 解决方案,从 python-creole v0.8 开始,更多信息:[链接](https://code.google.com/p/python-creole/wiki/UseInSetup)
- 2011-08-26 - 在运行 pip install 时出现 UnicodeEncodeError(运行 './setup.py egg_info')
- 2011-08-15 - 添加示例导入
- 2011-08-15 - 修复 PyPy 在 local_sync_cache.get_cache_information() 中的错误:PyPy 中未实现 sys.getsizeof()
- 2011-08-10 - v0.19.3 - 在 utils/http.py 中添加对 https 的支持
- 2011-08-10 - 缺少 socket 导入和拼写错误
- 2011-08-10 - 使用超时,并为 Python < 2.6 添加一个解决方案
- 2011-08-10 - 更好的解决方案,请参阅:[链接](http://www.python-forum.de/viewtopic.php?p=204899#p204899)(德语)
- 2011-08-09 - 添加 PyPi 网址
- 2011-08-09 - 清理 README
- 2011-08-09 - 将版本更改为 0.19.0
- 2011-08-09 - 将 README 从 textile 更改为 creole ;)
- 2011-08-09 - NEW:添加 utils/http.py,其中包含通过 http GET 获取网页的辅助函数
- 2011-08-09 - 合并规则
- 2011-08-08 - 在 "runserver" 模式下禁用默认 stdout 日志记录,并使检查更容易。
- 2011-07-14 - 拼写错误 :(
- 2011-07-14 - 修复错误:在 PyPi 包中添加缺少的模板
- 2011-07-13 - * 警告用户关于 [链接](https://github.com/pypa/pip/issues/319) * 如果 pip 已过时,则用户必须显式继续
- 2011-07-12 - 检查 pip 是否已过时。
- 2011-07-12 - 将 dry-run 转换为命令行选项,并添加 --verbose 和 --log 选项
- 2011-07-12 - 添加 "dry-run" 模式
- 2011-07-12 - 一些更友好的输出
- 2011-07-12 - 不要激活 virtualenv:在启动时检查是否已激活环境。
- 2011-07-12 - v0.18 - 从Gregor Müllegger在GSoC 2011 form-rendering分支上的出色工作中添加DOM比较到unittests: https://github.com/gregmuellegger/django/tree/soc2011/form-rendering
- 2011-07-12 - Bugfix: 不要两次转义
- 2011-07-11 - 在traceback中转义HTML代码。
- 2011-07-08 - Bugfix in "limit_to_usergroups": 使选择“懒惰”:不要在 init 中访问数据库
- 2011-07-08 - textile 错别字 ;)
- 2011-07-08 - 向README添加一些信息
- 2011-07-08 - 从版本中移除 "pre" -> 发布此版本
- 2011-07-08 - 添加脚本 "upgrade_virtualenv.py",也请参阅: https://github.com/pypa/pip/issues/59
- 2011-07-06 - 不要检查它是否为int(),尝试将其转换为int()(例如:我们从MySQL返回一个'long')
- 2011-07-06 - Bugfix in has_permission()
- 2011-07-06 - 添加 "Limit to usergroups"。
- 2011-07-06 - 向LocalSyncCache添加一些计数器和一个pformat_cache_information()函数。
- 2011-07-05 - 添加get_cache_information()(用于PyLucid)
- 2011-07-05 - 更好的日志示例
- 2011-07-05 - * 添加 "Local sync cache" 的文档 * 如果存在,则使用自己的缓存后端 * 存储最后一次clear()时间,如果不存在,则恢复到django缓存 * 添加一些日志输出
- 2011-07-04 - 添加 "local sync cache"
- 2011-06-30 - 在get_filtered_apps()中添加新参数 "skip_fail":如果为True:如果应用程序不可导入则引发异常
- 2011-06-30 - render_to 将关键字参数传递给render_to_response()(例如:mimetype="text/plain")
- 2011-06-15 - 不要使用第一个参数作为请求。检查所有参数。因此@render_to也可以在类中使用。(需要更多的测试)
- 2011-06-14 - * 添加models.UpdateInfoBaseModel * 更新decorators.render_to
- 2011-05-17 - 用于测试
- 2011-05-17 - 更改版本字符串
- 2011-05-17 - v0.16.4 ** Bugfix: """get_db_prep_save() got an unexpected keyword argument 'connection'""" 当保存SignSeparatedModelField()时
- 2011-05-16 - v0.16.3 ** 更新BrowserDebug:使用response.templates而不是response.template,并使输出更美观
- 2011-04-11 - 添加它
- 2011-04-11 - bugfix:添加错误消息
- 2011-04-11 - 合并堆栈信息代码,并在浏览器调试页面上显示更好的堆栈信息
- 2011-04-11 - 更新django_tools.utils.messages.StackInfoStorage以适应django代码更改。
- 2011-03-04 - v0.16.0 - NEW:路径模型字段(检查目录是否存在)TODO:1. 需要更多测试!2. 实现小部件
- 2011-02-25 - v0.15.0 ** NEW:添加一个灵活的URL字段(自己的验证器,模型-和表单字段)
- 2010-12-21 - v0.14.1 -> Bugfix:使MediaPathModelField中的路径相对(删除斜杠)
- 2010-12-08 - v0.14 - NEW:django-tagging插件:在标签字段下显示现有标签
- 2010-12-08 - 清理DocString
- 2010-11-22 - 将完整的设置添加到浏览器调试页面。
- 2010-09-30 - Bugfix UnicodeEncodeError在浏览器调试
- 2010-09-28 - 在setup.py中捕获错误
- 2010-09-16 - 将README.textile包含在MANIFEST.in中,感谢Sridhar Ratna的报告: http://code.google.com/p/django-tools/issues/detail?id=3
- 2010-09-14 - 在浏览器调试中显示用户消息
- 2010-09-14 - * NEW:django_tools.utils.messages.failsafe_message * 如果MEDIA_ROOT不可访问则捕获错误 * 将提交时间戳添加到版本字符串
- 2010-09-14 - 默认禁用调试打印
- 2010-08-25 - NEW:在安全的cookie中存储数据,请参阅:utils/client_storage.py
- 2010-08-24 - 使用pformat列出模板
- 2010-08-24 - 将版本字符串更改为v0.10.1
- 2010-08-24 - bugfix如果模板不存在
- 2010-08-24 - 在unittest BrowserDebug中显示使用的模板
- 2010-08-24 - 捕获如果最后一条消息不存在
- 2010-07-08 - 显示调试信息
- 2010-07-02 - chmod +x update.sh
- 2010-07-02 - 添加update.sh并将信息添加到README
- 2010-07-01 - 在django messages周围添加utils
- 2010-06-18 - 修复bug:未创建数据库列:不要覆盖get_internal_type()
- 2010-06-18 - 修改README文件名
- 2010-06-18 - * v0.9 ** 新增:/django_tools/fields/中的内容 ** 参见上面的不兼容更改!
- 2010-06-16 - 移除os.walk的followlinks参数(Python 2.6中已引入)
- 2010-06-15 - 新增:django_tools.widgets.SelectMediaPath():在settings.MEDIA_ROOT中选择子目录,以及新增加:SignSeparatedField
- 2010-06-15 - 向installed_apps_utils.get_filtered_apps()添加“no_args”关键字参数
- 2010-04-09 - 简化一些unittest代码并添加更多信息。
- 2010-04-01 - 信息打印:不要重复显示相同的文件信息。
- 2010-04-01 - 修复info打印bug:添加flush()方法。
- 2010-03-31 - * 添加:BaseTestCase.add_user_permissions() * 如果测试用户类型错误,则提供更好的错误消息
- 2010-03-25 - * 添加模型LanguageCode字段和表单LanguageCode字段,格式为Accept-Language头(RFC 2616) * 将目录"unittest"重命名为"unittest_utils" * 更改版本方案
- 2010-03-17 - 使用绝对路径到AUTHORS和README
- 2010-03-05 - 添加decorators.py
- 2009-11-25 - * human_duration()添加小时数 * 添加DocTest
- 2009-08-20 - v0.6.0 - 添加forms_utils.LimitManyToManyFields,跨发:http://www.djangosnippets.org/snippets/1691/
- 2009-08-18 - - v0.5.0
- 2009-08-10 - 移除settings导入:如果info打印用于settings中,则更好;)
- 2009-08-10 - * 添加:assertStatusCode():断言响应状态码,如果错误,则执行浏览器回溯。 * 添加:assertRedirect():断言响应是否重定向到正确的目标,如果错误,则执行浏览器回溯。
- 2009-08-05 - 将URL添加到异常消息中
- 2009-07-14 - 更新版本信息+历史记录
- 2009-07-14 - 添加使用示例。
- 2009-07-14 - 添加实验性的"warn_invalid_template_vars"
- 2009-07-14 - 添加get_filtered_apps():过滤settings.INSTALLED_APPS并创建一个可以解析给定URL的所有应用程序的列表 >resolve_url<
- 2009-07-14 - Bugfix:如果实例以前已保存,则排除该实例。
- 2009-07-14 - 简化的browser_traceback
- 2009-07-13 - 如果缺少必要字段,则跳过检查。
- 2009-07-13 - 添加models_utils,参见:http://www.jensdiemer.de/_command/118/blog/detail/67/(德语)
- 2009-06-18 - 添加get_current_user()
- 2009-06-17 - 添加threadlocals中间件
- 2009-06-17 - 添加info_print
- 2009-06-16 - 添加"SlowerDevServer":简单减慢Django开发者服务器。中间件在每次200响应中插入time.sleep
- 2009-05-27 - Bugfix:在assertResponse中使用smart_str(例如:在终端中运行时的编码错误)
- 2009-05-14 - 添加缺失的init.py ;)
- 2009-05-14 - 模板渲染工具
- 2009-05-12 - 将"_headers"添加到响应信息列表中
- 2009-05-07 - 使用正常的unittest.TestCase并添加direct_run()函数。
- 2009-05-07 - 添加init.py
- 2009-05-07 - 重命名目录
- 2009-05-07 - * 从http://code.google.com/p/django-dbpreferences/添加unittest内容 * 添加初始内容
链接
| 首页 | https://github.com/jedie/django-tools | | PyPi | https://pypi.python.org/pypi/django-tools/ |
捐赠
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。
源分布
构建分发
django_tools-0.56.2.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 88a192f2873f0411b99ee1aba04f2779133284cd18a5c78976e8e4605ba5d7f7 |
|
MD5 | 53a11e6e6a4e5517eeb14532cdf4de6d |
|
BLAKE2b-256 | 24ec0f0c55599c348dd209427a5dc64c59a9d803b52274914e49dd8bba3a7166 |
django_tools-0.56.2-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 29c25be814d74cd9f554d7d45bc205f5570e5feaa4232cbd09cc913c46b20c07 |
|
MD5 | d0e001d44adb2492bafca3bb8bcf42f2 |
|
BLAKE2b-256 | ee90a3c9f923b229afffa8e68eb1cded654ffa42e2b96552a8fa1d153f017f32 |