Wagtail中的资源管理器不显示任何页面

时间:2017-04-20 08:30:29

标签: wagtail

我有两个相同代码(开发和生产)的实例,我发现这个问题只发生在生产中。我将它们都部署到一个原始实例,这意味着之前没有Wagtail安装。

Wagtail管理员显示我没有页面。我有两页,即使我没有,也不应该有一个"欢迎来到Wagtail Page" (它通常是,它在我的开发实例上)。此外,看起来有一部分网站缺失。

enter image description here

这就是我所看到的,无论我创建了多少页(我通过URL创建它们)

修改 这是日志中的完整堆栈跟踪

2017-04-21 10:27:08,898 exception 22370 ERROR Internal Server Error: /admin/pages/
Traceback (most recent call last):
  File "/opt/..../venv/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner
    response = get_response(request)
  File "/opt/..../venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/opt/..../venv/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/opt/..../venv/lib/python3.5/site-packages/django/views/decorators/cache.py", line 43, in _cache_controlled
    response = viewfunc(request, *args, **kw)
  File "/opt/..../venv/lib/python3.5/site-packages/wagtail/wagtailadmin/decorators.py", line 24, in decorated_view
    return view_func(request, *args, **kwargs)
  File "/opt/..../venv/lib/python3.5/site-packages/wagtail/wagtailadmin/views/pages.py", line 104, in index
    'do_paginate': do_paginate,
  File "/opt/..../venv/lib/python3.5/site-packages/django/shortcuts.py", line 30, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/loader.py", line 68, in render_to_string
    return template.render(context, request)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/backends/django.py", line 66, in render
    return self.template.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 208, in render
    return self._render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 994, in render
    bit = node.render_annotated(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/loader_tags.py", line 174, in render
    return compiled_parent._render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 994, in render
    bit = node.render_annotated(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/loader_tags.py", line 174, in render
    return compiled_parent._render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 994, in render
    bit = node.render_annotated(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/loader_tags.py", line 174, in render
    return compiled_parent._render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 994, in render
    bit = node.render_annotated(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/loader_tags.py", line 70, in render
    result = block.nodelist.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 994, in render
    bit = node.render_annotated(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/loader_tags.py", line 70, in render
    result = block.nodelist.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 994, in render
 File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/loader_tags.py", line 174, in render
    return compiled_parent._render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 199, in _render
    return self.nodelist.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 994, in render
    bit = node.render_annotated(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
    return self.render(context)
  File "/opt/..../venv/lib/python3.5/site-packages/django/template/defaulttags.py", line 314, in render
    if match:
  File "/opt/..../venv/lib/python3.5/site-packages/django/core/paginator.py", line 112, in __len__
    return len(self.object_list)
  File "/opt/..../venv/lib/python3.5/site-packages/django/db/models/query.py", line 238, in __len__
    self._fetch_all()
  File "/opt/..../venv/lib/python3.5/site-packages/django/db/models/query.py", line 1087, in _fetch_all
    self._result_cache = list(self.iterator())
  File "/opt/..../venv/lib/python3.5/site-packages/wagtail/wagtailcore/query.py", line 380, in specific_iterator
    pages = model.objects.filter(pk__in=pks)
AttributeError: 'NoneType' object has no attribute 'objects'

2 个答案:

答案 0 :(得分:3)

经过进一步调查后,我发现当您从项目中删除页面模型定义时会发生此错误,但该类型的页面仍然存在。 (Wagtail 能够优雅地处理这种情况 - 事实上它不是一个错误,我将很快提出问题......)

您可以通过在./manage.py shell命令行上运行以下行来跟踪此情况:

from django.contrib.contenttypes.models import ContentType

[(ct.id, ct.app_label, ct.model) for ct in ContentType.objects.all() if ct.model_class() is None and ct.app_label != 'wagtailadmin']

希望这会产生如下结果:

[(2, u'home', u'homepage')]

显示缺少的网页类型的内容类型ID,应用标签和型号名称。

要让管理员再次使用,请运行以下行(确保将2替换为上述结果中的内容类型ID):

from wagtail.wagtailcore.models import Page

Page.objects.filter(content_type_id=2).update(content_type=ContentType.objects.get(app_label='wagtailcore', model='page'))

这会将受影响的页面转换为Wagtail的基本“页面”类型(除了“标题”之外没有内容字段) - 然后您可以继续删除此页面。

答案 1 :(得分:0)

对我来说,@ sagman的解决方案进行了一些小的更改。如果在Shell中输入 wagtail.wagtailcore 但在已安装的应用程序中具有 wagtail.core ,则发现您将收到ModuleNotFoundError,您需要从wagtail.core中输入。模型将在外壳中导入Page ,而不是 wagtail.wagtailcore.models导入Page 。其他所有工作都如@gasman所示。