【问题标题】:what may cause a Page Not Found error in flatpages?什么可能导致平面页面中的页面未找到错误?
【发布时间】:2009-09-04 22:20:14
【问题描述】:

我只是在http://docs.djangoproject.com/en/dev/ref/contrib/flatpages/ 之后设置了 django 的平面应用程序

一切都很好,但是当我链接到平面页面时,我总是得到:

Page not found (404)
Request Method:     GET
Request URL:    http://example.com/about/

[..]

The current URL, about/, didn't match any of these.

那是怎么回事?什么可能导致此错误?

提前谢谢...

【问题讨论】:

    标签: django django-urls


    【解决方案1】:
    1. 您的 MIDDLEWARE_CLASSES 列表中有 FlatpageFallbackMiddleware 吗?

    2. 您的数据库中是否肯定有一个平面页面,其 URL 字段中包含 /about/?

    3. 平面页面是否链接到正确的站点对象?它必须使用与您的 settings.py 中的 SITE_ID 匹配的数字 ID 链接到 Site 对象。在这种情况下,站点对象的实际名称/域无关紧要,它只是您必须注意的数字 ID。根据我的经验,这是导致平面页面神秘丢失的最常见原因。

    您粘贴的 404 中的请求 URL“http://example.com/about/”令人困惑 - 我假设您把它放在那里是为了隐藏您的实际域?因为如果实际的请求 URL 是在 example.com,你就不会得到这个 Django 调试页面。

    【讨论】:

    • 呵呵,你说得对..我的问题也是第三个,后来我意识到了,我解决了..谢谢你也提到了!
    • 你好,有同样的错误,但所有这些都是正确的——在 settings.py 和数据库中,site_id 是 1;我有 FlatpageFallbackMiddleware 并且我在模板目录中有 flatpages/about.html。但是尝试访问 127.0.0.1:8000/about/ 会导致错误“当前 URL,about/,与这些中的任何一个都不匹配。”我还需要检查什么:(我已经花了 2-3 个小时来找到答案
    • @serge - 数据库中是否有链接到站点 1 的 Flatpage 对象,在 template_name 字段中带有“flatpages/about.html”,在 url 字段中带有“/about/”?
    • 是的,有一个对象是 Flatpage (id=1),有一个 id=1 的 Site,还有一个 flatpage_sites,其对象的 id 是 site 和 flatpage 对象(两者都设置到 1)
    猜你喜欢
    • 2011-08-06
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多