如何从HomePage(页面)重定向到您的自定义应用模型

时间:2018-03-13 15:31:13

标签: django wagtail

我创建了一个应用程序“博客”。在我的应用程序中,我有几个模型,包括“BlogIndex(页面)”。当我运行本地服务器时,我发现自己在“home_page.html”。我想要的是在“blog_index.html”启动我的本地服务器。我知道我可以在设置> site> localhost设置根页面以使我的“blog_index.html”成为根页面,但我不能这样做,因为在我的应用程序中我有一些其他模型同时存在作为“BlogIndex(页面)”的级别,他们是根“子页面”的孩子,所以它会制动我的代码。所以我的问题是:我可以从“HomePage(页面)”重定向到我的“BlogIndex”,这样当我启动服务器时,我会自动从“HomePage”重定向到“BlogIndex”吗?我该怎么做?它会对网站的性能产生多大影响并进行优化?

我知道有设置>重定向但它只适用于非活动页面,但我需要“HomePage”才能激活。 谢谢。

1 个答案:

答案 0 :(得分:1)

也许更好的方法是在您的主页上显示您的博客帖子(以及您想要的任何其他模型)。只需覆盖get_context()。见这里:Wagtail Views: extra context

更新: 您可以通过重写serve()方法重定向。例如,在您的模型中,您可以执行以下操作:

# home/models.py
...
from django.http import HttpResponseRedirect
from django.urls import reverse

class HomePage(Page):
    body = RichTextField(blank=True)

    content_panels = Page.content_panels + [
        FieldPanel('body', classname="full"),
    ]

    def serve(self, request):
        # Redirect to blog index page
        return HttpResponseRedirect('/blog/')

        # only do this if you're using urls.py and namespaces
        # return HttpResponseRedirect(reverse('blog:index'))

更多信息:http://docs.wagtail.io/en/latest/reference/pages/model_recipes.html?highlight=serve()#overriding-the-serve-method