gpt4 book ai didi

wagtail - 在 Wagtail 多站点设置中为每个站点设置 404

转载 作者:行者123 更新时间:2023-12-04 15:29:09 29 4
gpt4 key购买 nike

我试图让两个不同的 Wagtail 站点拥有自己的 404 页面,但似乎没有办法在 wagtail“设置”=>“的“站点”配置中指定哪个页面用作 404 页面站点”部分,当我将它们放入所涉及的应用程序目录时,我似乎无法加载正确的 404:

codebase/
./__init__.py
./manage.py
./apps/
./settings.py
./urls.py
...
./django-app-1/
./django-app-2/
./templates/
./404.html
./mainsite/
./migrations/
./static/
./templates/
./mainsite/
./404.html (this 404 always gets used)
./spinoff/
./migrations/
./static/
./templates/
./spinoff/
./404.html (this file never gets used)

所以在 INSTALLED_APPS我们有:
INSTALLED_APPS = [
...django apps...
...wagtail apps...

'apps.mainsite',
'apps.spinoff',
]

在这种情况下,主站点拥有大量所有页面类型,而运行在不同域上的衍生站点通过从 apps.mainsite 导入这些页面类型来使用这些页面类型。 .

在 Wagtail 中,我们有两个以 root 身份运行的页面:一个 Homepage那是一个 mainsite页面类型,还有 Spinoff Homepage那是一个 spinof从主站点的页面类型继承的页面类型。

在站点设置中,我们有一个指向 mainsite.com 的站点条目。 ,与主 Homepage设置为 Root,以及另一个指向 spinoff.com 的站点条目,将衍生主页设置为根。

对于这两个站点,不存在的 url 请求会导致主站点的 404.html 被使用,所以问题是:我们如何使衍生域上不存在的 url 解析为衍生域的 404.html?

最佳答案

由于 Wagtail 是基于 Django 构建的,您可以 customize the error view .鹡鸰的 core.view.serve电话core.models.page.route ,如果没有找到页面路由,则会引发 Http404 .因此,在 urls.py你会说:
from yourapp.views import custom404_viewhandler404 = 'yourapp.views.custom404_view'
而在 views.py :

from django.http import HttpResponseNotFound

def custom404_view(request, exception):
return HttpResponseNotFound('<h1>{}</h1>'.format(request.site))

我上面显示的内容返回 Wagtail 站点以说明该站点在 View 中可用,因此在您的情况下,只需根据站点有条件地返回您的 HTML。

关于wagtail - 在 Wagtail 多站点设置中为每个站点设置 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56449188/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com