【发布时间】:2019-06-04 18:04:48
【问题描述】:
我正在尝试让两个不同的 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 设置为根,另一个站点条目指向spinoff.com,衍生主页设置为根。
对于这两个网站,不存在的 url 请求会导致主站点的 404.html 被使用,所以问题是:我们如何使衍生域上不存在的 url 解析为衍生域的 404.html代替?
【问题讨论】:
-
作为参考,已针对此问题提出了一个问题,因为它似乎在文档中丢失。 github.com/wagtail/wagtail/issues/5360
-
那个参考是我:我提交了那个,在这个问题在通常的时间里没有得到答案之后 wagtail 问题做 =)
-
是的,要找到一个可靠的解决方案有点棘手,我在 Github 问题上添加了一些注释。虽然不确定文档是否是一个解决方案,也许是一个简单的方法(如下面 Dan 的解决方案),但它可能需要增强代码以使这种事情更容易开箱即用。
-
鹡鸰文档在给出示例方面相当不错,因此对于专门的“使用多站点设置时需要考虑的事项”文本,一个具体的示例肯定是有用且合适的。当然,理想的解决方案是您在
sites设置中自行设置:选择一个根页面并选择一个 404 页面。
标签: wagtail