Python Django:将一页设置为主页面
我是Django的新手,我想做一些我不知道怎么做的事情 我有一个模型SimplePage,它只是代表一个在网站上可见的网页,其内容可以在管理员中编辑。(我认为这与FlatPage类似。) 所以我的网站有很多SimplePages,我希望其中一个成为主页。(又称索引页。)我知道如何在urlPython Django:将一页设置为主页面,python,django,Python,Django,我是Django的新手,我想做一些我不知道怎么做的事情 我有一个模型SimplePage,它只是代表一个在网站上可见的网页,其内容可以在管理员中编辑。(我认为这与FlatPage类似。) 所以我的网站有很多SimplePages,我希望其中一个成为主页。(又称索引页。)我知道如何在url/上提供它。但我也希望它接受稍微不同的处理。(它包含与其他页面不同的页面元素。) 将页面标记为主页的好方法是什么?我曾考虑在SimplePage模型中添加一个布尔字段is_main_page,但如何确保只有一个页
/
上提供它。但我也希望它接受稍微不同的处理。(它包含与其他页面不同的页面元素。)
将页面标记为主页的好方法是什么?我曾考虑在SimplePage模型中添加一个布尔字段
is_main_page
,但如何确保只有一个页面可以标记为主页?使用主键在settings.py内创建主页设置。然后创建视图主页并使用设置从数据库检索主页对象
编辑:
您也可以这样做:添加一个模型,它将引用SimplePage并指向主页面。在主页视图中,您将检索所需的SimplePage,django admin中的任何人都可以轻松更改它。最简单的方法是按照您的建议创建布尔值,并使用
pre\u save
信号从数据库中的所有其他内容中删除布尔值
from django.db.models import signals
def simple_page_pre_save(sender, instance, **kwargs):
if instance.is_main_page == True:
SimplePage.objects.update(is_main_page=False)
signals.pre_save.connect(simple_page_pre_save, sender=SimplePage)
这样,每当您保存SimplePage
时,它就会看到是否为主页
为真,以及是否每隔一页将是否为主页
设置为为假
。仍有一些工作要做,以确保始终有一个是\u主页
,但这更取决于您。在设置文件中存储“魔法值”是非常不灵活的,并且有更好的解决方案。