Django CMS页面为未登录管理员的用户投掷404

时间:2013-06-17 13:37:14

标签: django django-cms

对于未登录的用户,所有页面都会在网站上抛出404错误。但如果我登录管理员并返回查看该网站,则所有页面都可以正常查看。

我多年来一直在使用Django CMS,之前没有遇到过这种情况。与此网站的唯一区别是默认语言是法语,在我的设置中我有:

LANGUAGES = [
    ('fr', 'Francais'),
]

作为我的LANGUAGES设置,这里是我的LANGUAGE_CODE

LANGUAGE_CODE = 'fr' 

以下是我的urls.py

from django.conf.urls.defaults import *
from django.contrib import admin
from django.conf import settings

admin.autodiscover()

urlpatterns = patterns('',
    (r'^admin/', include(admin.site.urls)),
    url(r'^', include('cms.urls')),
)

if settings.DEBUG:
    urlpatterns = patterns('',
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
    url(r'', include('django.contrib.staticfiles.urls')),
) + urlpatterns

和我的中间件......

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'cms.middleware.multilingual.MultilingualURLMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
)

这可能是什么原因?

2 个答案:

答案 0 :(得分:2)

只需添加一个加号:)

if settings.DEBUG:
    urlpatterns += patterns('',

答案 1 :(得分:2)

我遇到了类似的情况:我正在使用Django-CMS的多种语言。

我的问题与我定义的CMS_LANGUAGES变量有关:我只是解除了example from the docs的一部分。

A comment on a GitHub issue帮助我指明了正确的方向。

我之前将变量设置为:

CMS_LANGUAGES = {
    ...
    'default': {
        'fallbacks': ['en', 'de', 'fr'],
        'redirect_on_fallback': False,
        'public': False,
        'hide_untranslated': False,
    }
}

注意public布尔值的定义。

此外,请确保您按照documentation中有关在CMS_LANGUAGES词典中设置语言变量的说明进行操作。

'public': True替换上面的内容让我的事情再次起作用。