0

我正处于编写 Django 应用程序以输出 html5 幻灯片演示的头脑风暴阶段。我希望能够为每个幻灯片对象定义一个样式(也可能是演示对象的默认值),这只是定义颜色、大小的 css。等等。最终,我想要做的是创建将演示文稿输出到任意演示框架的函数,例如,deck.js 或 fathom.js。

我刚刚打出了我的应用模型的一个非常粗略的草稿:

from django.db import models
from ckeditor.fields import RichTextField

class Presentation(models.Model):
    title = models.CharField()

class Slide(models.Model):
    title = models.Charfield()
    header = RichTextField()
    footer = RichTextField()
    presentation = models.ForeignKey(Presentation)
    slide_number = models.IntegerField() 
    audio = models.FileField(null=True, blank=True)
    style = models.ForeignKey(SlideStyle)

class SlideSegment(models.Model):
    slide = models.ForeignKey(Slide)
    duration = models.IntegerField() # duration of slide segment in ms
    position = models.SmallIntegerField() # to order segments
    content = RichTextField()

    class Meta:
        ordering = ['position']

class SlideStyle(models.Model):
    name = Charfield()
    css = ???

我的第一个想法是创建一个 TextField 或 UrlField 来存储一些 CSS,但我立即开始发现这个问题。

利用 Django 的模板系统似乎是 Django 的方法,将数据与表示分离等等。但是,那么我将如何管理这些样式,以便使用 django 管理界面的管理员可以创建/删除样式并在创建幻灯片时选择样式?

4

1 回答 1

1

“样式”通常需要的不仅仅是一个 css 文件——多个 css 文件、背景图像、最终字体等。

如果要上传“样式”,那么一个可能的解决方案可能是使用接受 zip 的 FileField,至少需要包含“style.css”文件作为入口点。然后在上传时,文件将被解压缩到 /styles/ 中,SlideStyle 模型会生成一个“style_url”属性,返回适当的 url...

我的 2 美分。

于 2013-04-19T13:58:24.960 回答