一个简单的django应用程序,它提供了一个基于奇妙的sir trevor项目的模型字段和相应的小部件
django-sirtrevor的Python项目详细描述
django sirtrevor是一个提供内容编辑的简单django应用程序 基于奇妙的Sir Trevor项目的小部件。
快速启动
安装django sirtrevor:
pip install django-sirtrevor
将sirtrevor添加到已安装的应用程序设置中,如下所示:
INSTALLED_APPS = ( ... 'sirtrevor', )
添加特雷弗爵士网址:
url(r'^sirtrevor/', include('sirtrevor.urls')),
创建一个使用SirTrevorField:
的模型from django.db import models from sirtrevor.fields import SirTrevorField class MyModel(models.Model): ... content = SirTrevorField() ...
现在您可以…
- 在django管理中查看它的运行情况
- 从模型中创建ModelForm。
- 创建一个纯Form并使用sirtrevor.forms.SirTrevorFormField
- 使用sirtrevor.widgets.SirTrevorWidget作为 Textarea
配置
Sir Trevor有几个configuration options。您可以自定义大多数 它们在您的settings.py中广泛投影,或者在每个小部件的基础上投影一些 kwargs用于SirTrevorWidget。
可用选项(CONFIGURATION_SETTINGS/widget_kwargs):
- SIRTREVOR_BLOCK_TYPES/st_block_types
- 要与编辑器一起使用的块类型列表。 默认为['Text', 'List', 'Quote', 'Image', 'Video', 'Tweet', 'Heading']
- SIRTREVOR_DEFAULT_TYPE/st_default_type
- 启动编辑器的默认块。 默认为None
- SIRTREVOR_BLOCK_LIMIT/st_block_limit
- 可显示的块的总数。 默认为0
- SIRTREVOR_BLOCK_TYPE_LIMITS/st_block_type_limits
- 限制可按其类型显示的块数。 默认为{}
- SIRTREVOR_REQUIRED/st_required
- 验证所需的强制块类型。 默认为None
- SIRTREVOR_UPLOAD_URL/st_upload_url
- ajax图像上传的url。 默认为/sirtrevor/attachments/(取决于包含 Django Sirtrevor的URL位于^{TT31}$)
- SIRTREVOR_UPLOAD_PATH
- 相对于MEDIA_ROOT存储上载图像的路径。(不是 可通过widget kwargs配置) 默认为attachments
- SIRTREVOR_ATTACHMENT_PROCESSOR
- 一个字符串,包含将在 正在保存上载的图像。有关详细信息,请参见below。(不可通过 小工具夸尔格斯) 默认为None
调整图像大小
您可以通过在 编码并将SIRTREVOR_ATTACHMENT_PROCESSOR指向其位置。第一次 参数将是文件对象,方法必须返回 SimpleUploadFile对象。
示例在名为core的应用程序中的utils.py中实现。 SIRTREVOR_ATTACHMENT_PROCESSOR设置为core.utils.resize_attachment:
from PIL import Image from StringIO import StringIO from django.core.files.uploadedfile import SimpleUploadedFile def resize_attachment(file_): size = (1024, 9999) try: temp = StringIO() image = Image.open(file_) image.thumbnail(size, Image.ANTIALIAS) image.save(temp, 'jpeg') temp.seek(0) return SimpleUploadedFile(file_.name, temp.read(), content_type='image/jpeg') except Exception as ex: return file_
自定义块
sir trevor可以通过custom blocks扩展。从0.2.1开始 django sirtrevor还基本支持自定义块。
下面是一个循序渐进的小指南:
myapp/blocks.py:
from sirtrevor.blocks import BaseBlock class MyCustomBlock(BaseBlock): name = 'MyCustomName' class Media: js = ['sirtrevor/blocks/mycustomblock.js']
myapp/models.py:
import sirtrevor from .blocks import MyCustomBlock sirtrevor.register_block(MyCustomBlock)
myapp/static/sirtrevor/blocks/mycustomblock.js:
SirTrevor.Blocks.MyCustomName = SirTrevor.Block.extend({ type: 'mycustomblock', // ... });
有关custom blocks的详细信息,请参阅sir trevor的文档 关于自定义块的javascript部分。
myapp/templates/sirtrevor/blocks/mycustomblock.html:
<div class="content-block mycustom-block"> <!-- Whatever JSON the custom block creates is available in the template --> </div>
settings.py:
# ... SIRTREVOR_BLOCK_TYPES = ['Text', '...', 'MyCustomName'] # ...
请查看实现 文件下载的简单块类型。