一个简单的 Django 应用程序,用于创建深度缩放平铺图像。
项目描述
Django-deepzoom 是一个用于创建和使用 Deep Zoom 平铺图像的 Django 应用程序。它方便地将 Daniel Gasienica 和 Kapil Thangavelu 的 deepzoom.py 图像生成器和 OpenSeadragon 深度缩放查看器集成到一组模型类和模板标签中,这些类和模板标签以编程方式生成平铺图像和将其实例化为模板所需的所有 JavaScript。
详细文档可在http://django-deepzoom.readthedocs.org/en/latest/上找到。
- 作者:
大卫·考克斯
- 联系方式:
- 版本:
3.0.3
告诉我你对它的想法…
什么是新的?
Django-deepzoom 3.0 涉及重大架构更改,因此需要进行主要版本升级。它引入了基于信号的保存、新的DEFAULT_CREATE_DEEPZOOM_OPTION设置、更好的文件管理和分离的文件位置。它继续兼容 Python 2/3、Django 1.4+ 和 Pillow 1.7.8+。
基于信号的保存:保存/更新代码已从模型保存/删除方法中完全删除,并分布在信号处理程序方法中。这样做是为了改善模型间的协调并更好地管理字段更新期间的状态转换。以前无法更新的字段,例如UploadedImage.uploaded_image现在按预期方式处理。如果一个全新的图像上传到现有的UploadedImage子类并保存,则先前的 Uploaded_image将被删除,先前关联的 deepzoom 将被删除,新上传的图像保存到磁盘,并且将从新的图像生成一个全新的 deepzoom图片。
新的DEFAULT_CREATE_DEEPZOOM_OPTION设置:可以通过将DEFAULT_CREATE_DEEPZOOM_OPTION设置为True或False来全局控制create_deepzoom字段的默认值。UploadedImage子类的新实例将设置为始终创建深度缩放或从不创建深度缩放。
更好的文件管理:不再依赖默认的 Django 文件管理策略“从不删除/始终保存”,实例保存、更新和删除现在涉及相应的文件行为,以防止文件系统溢出。
解耦文件位置:保存到实例的文件位置现在是相对于MEDIA_ROOT计算和保存的,而不是绝对文件路径。
运行测试
安装 django-deepzoom 后,您可能希望通过运行测试来对其进行完整性检查,如下所示:
python manage.py test deepzoom --settings=deepzoom.test.test_settings
快速开始
1.) 像这样安装“django-deepzoom”:
pip install -U django-deepzoom
或者,像这样:
wget https://pypi.python.org/packages/source/d/django-deepzoom/django-deepzoom-3.0.3.tar.gz tar -xvf django-deepzoom-3.0.3.tar.gz cd django-deepzoom-3.0.3 python setup.py install
2.) 将“deepzoom”添加到您的 INSTALLED_APPS 设置中。Django 1.7 为应用程序初始化引入了 AppConfig.ready()入口点,这是新信号设计(在该版本的 Django 中)所需的。这意味着 django-deepzoom 应用程序需要在 Django 1.7+ 中指定一种方式,而在以前的 Django 版本中使用传统方式。在 Django 1.7+ 中添加这样的应用程序:
(in settings.py)
INSTALLED_APPS = (
...
'deepzoom.apps.DeepZoomAppConfig',
...
)
但是,在 Django 1.6 及之前版本中,以传统方式添加应用程序,如下所示:
(in settings.py)
INSTALLED_APPS = (
...
'deepzoom',
...
)
3.) 将日志配置添加到您的 settings.py 文件中,如下所示:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'filename': 'deepzoom.exception.log',
},
},
'loggers': {
'deepzoom.models': {
'handlers': ['file'],
'level': 'ERROR',
'propagate': True,
},
},
}
4.) 将“ UploadedImage ”模型类子类化为您自己的(基于图像的)类,如下所示:
(in models.py)
from deepzoom.models import DeepZoom, UploadedImage
class MyImage(UploadedImage):
'''
Overrides UploadedImage base class.
'''
pass
5.) 导入信号.py。如果使用 Django 1.6 或更早版本,则必须在解析模型定义后导入信号模块。这意味着 signal.py 导入语句必须添加到 models.py 文件的末尾或应用程序的 __init__.py 文件中。前者避免破坏测试覆盖率,因此可能更可取。Django 1.7+ 不需要导入 signals.py,因为这是由AppConfig.ready()方法处理的。导入 signals.py 文件,如下所示:
(in models.py) ... model definitions... ... import deepzoom.signals
6.) 运行python manage.py syncdb创建 django-deepzoom 模型。
7.) 将适当的 URL 添加到您的 Urlconf,如下所示:
(in urls.py)
from deepzoom.views import deepzoom_view
urlpatterns = patterns('',
...
url(r'^deepzoom/(?P<passed_slug>\b[a-z0-9\-]+\b)',
deepzoom_view,
name="v_deepzoom"),
...
)
8.) 编写一个查询特定 DeepZoom 对象并将其传递给模板的视图,如下所示:
(in views.py)
from deepzoom.models import DeepZoom
def deepzoom_view(request, passed_slug=None):
try:
_deepzoom_obj = DeepZoom.objects.get(slug=passed_slug)
except DeepZoom.DoesNotExist:
raise Http404
return render_to_response('deepzoom.html',
{'deepzoom_obj': _deepzoom_obj},
context_instance=RequestContext(request))
9.) 在您的模板中,创建一个具有唯一 ID 的空 div。加载 deepzoom 标签并将 deepzoom 对象和 deepzoom div ID 传递给正文中 <script> 块内的模板标签,如下所示:
(in e.g. deepzoom.html)
{% extends "base.html" %}
{% load deepzoom_tags %}
<div id="deepzoom_div"></div>
<script>{% deepzoom_js deepzoom_obj "deepzoom_div" %}</script>
10.) 运行python manage.py collectstatic将您的静态文件收集到 STATIC_ROOT。
11.) 启动开发服务器并访问http://127.0.0.1:8000/admin/将图像上传到关联模型(您需要启用管理应用程序)。一定要检查生成深度缩放?保存该图像之前的复选框。
12.) 导航到包含深度缩放图像的页面,然后单击/触摸它或单击/触摸覆盖的控件以放大和缩小平铺图像。
.
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
django_deepzoom -3.0.3-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 17d06996eaa16a97aa9709430a9eb8e298d5446f4bd683c69a77f3ba4bd9dd5e |
|
| MD5 | f577f19d8263bc1396046c75acb57fa7 |
|
| 布莱克2-256 | 40fdd1c13a78f2ba29631910c2e66515f46422c9f658503aea09bf18bcc0b5f6 |