我正在使用 Django 创建一个简单的网站,其中我使用模板继承。“母版页”模型包含显示在所有页面上的信息,例如页眉或页脚。我无法对其进行硬编码,因为我需要它可以从管理页面进行编辑。
目前(一些)我的模型看起来有点像这样:
class MasterContent(models.Model):
title_header = models.CharField(max_length=200)
name_header = models.CharField(max_length=200)
class ProfileContent(models.Model):
description = models.TextField()
profile_picture = models.ImageField(upload_to='profile')
然后我渲染到这样的视图:
def profile(request):
return content_shortcut(ProfileContent, 'pages/profile.html')
def content_shortcut(content_class, template):
return render_to_response(template, {'master_content':MasterContent.objects.get(id=1), 'content':content_class.objects.get(id=1)})
现在,我需要从不同的应用程序呈现视图,但我仍然希望传递母版页内容。master_page
如果我每次渲染视图时都必须手动包含内容(即使使用快捷方式,它似乎是错误的),这对我来说会变得太混乱。我尝试将 MasterContent 抽象化,但这迫使我在从它继承的每个其他模型中重新输入数据,这是一个更糟糕的情况。
简而言之:我怎样才能轻松地在所有视图中获得数据,跨应用程序,可以从管理页面中的一个位置进行编辑,同时保持干燥!
注意:我还认为必须有一种更流畅的方式(比如平面页面)来管理个人资料页面的内容,而不是拥有一个我只会使用一个实例/行的模型,但我现在选择忽略这一点。 ..