0

我对 Django 很陌生。

我有一个问题要解决。

我的网站有几个地方我想放置一些由管理面板管理的内容(静态文本)。我知道有 django flatpage 或像 django-chunk 这样的项目。Flatpage 只有几个字段,django-chunk 都在一个地方(键值)。

我想仅使用编辑视图将新位置添加到面板管理员,用户可以在其中填写几个文本字段。保存后数据存储在文件(或数据库)中。

一般来说,我想存储小块文本,如电话号码、地址、一些位于几页上的标语。并且没有必要使用完整的 CRUD 创建模型。

我怎样才能做到这一点?可能吗?

4

1 回答 1

0

您提到创建模型是不必要的,但不是为什么。我认为这是正确的方法。

class Snippet(models.Model):
    name = models.CharField(max_length=24)
    body = models.TextField()

向管理员注册它,并根据需要创建尽可能多的片段。如果您只希望您的用户能够编辑您指定的权限,您可以禁用添加和删除权限。

将它们添加到模板上下文中:

def get_context_data(self, request, *args, **kwargs):
    data = super(MyView, self).get_context_data(request, *args, **kwargs)
    data['snippet1'] = Snippet.objects.get(name='snippet1').body
    data['snippet2'] = Snippet.objects.get(name='snippet2').body
    return data

然后在模板中打印它们:

...
Contact us at {{ snippet1 }}!
...

这有点简化。您可能想要一个视图 mixin,它根据名称的声明性列表添加您需要的所有片段,您可能想要优化查询,这样您就不会在每个请求中循环访问数据库 10 次,但这是一个好的开始到一个简单的解决方案。

于 2012-10-11T17:41:59.943 回答