"Ошибка "Страница не найдена" после включения функции "Логин обязателен" (CMS_Permission)
Я хотел бы защитить паролем страницу на моем сайте.
Для этого я установил CMS_PERMISSION = True
в settings.py. А в разделе Page > Permission я установил флажок login required.
При попытке зайти на страницу появилась следующая ошибка:
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/en/accounts/login/?next=/en/private/
Raised by: cms.views.details
Using the URLconf defined in backend.urls, Django tried these URL patterns, in this order:
en/ ^jsi18n/$ [name='javascript-catalog']
^static/(?P<path>.*)$
en/ ^admin/
en/ ^ ^blog-content/\Z [name='posts-latest']
en/ ^ ^blog-content/feed/\Z [name='posts-latest-feed']
en/ ^ ^blog-content/feed/fb/\Z [name='posts-latest-feed-fb']
en/ ^ ^blog-content/(?P<year>[0-9]+)/\Z [name='posts-archive']
en/ ^ ^blog-content/(?P<year>[0-9]+)/(?P<month>[0-9]+)/\Z [name='posts-archive']
en/ ^ ^blog-content/author/(?P<username>[^/]+)/\Z [name='posts-author']
en/ ^ ^blog-content/category/(?P<category>[^/]+)/\Z [name='posts-category']
en/ ^ ^blog-content/tag/(?P<tag>[-a-zA-Z0-9_]+)/\Z [name='posts-tagged']
en/ ^ ^blog-content/tag/(?P<tag>[-a-zA-Z0-9_]+)/feed/\Z [name='posts-tagged-feed']
en/ ^ ^blog-content/(?P<year>[0-9]+)/(?P<month>[0-9]+)/(?P<day>[0-9]+)/(?P<slug>[^/]+)/\Z [name='post-detail']
en/ ^ ^blog-content/(?P<year>[0-9]+)/(?P<month>[0-9]+)/(?P<slug>[^/]+)/\Z [name='post-detail']
en/ ^ ^blog-content/(?P<category>[^/]+)/(?P<slug>[^/]+)/\Z [name='post-detail']
en/ ^ ^blog-content/(?P<slug>[^/]+)/\Z [name='post-detail']
en/ ^ ^cms_login/$ [name='cms_login']
en/ ^ ^cms_wizard/
en/ ^ ^(?P<slug>[0-9A-Za-z-_.//]+)/$ [name='pages-details-by-slug']
en/ ^ ^$ [name='pages-root']
en/ ^sitemap\.xml$
en/ ^taggit_autosuggest/
en/ ^filer/
The current path, /en/accounts/login/, didn’t match any of these.
Мой urls.py выглядит следующим образом:
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.urls import include, re_path, path
from django.views.i18n import JavaScriptCatalog
from django.contrib.sitemaps.views import sitemap
from cms.sitemaps import CMSSitemap
from djangocms_blog.sitemaps import BlogSitemap
urlpatterns = i18n_patterns(
re_path(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'),
)
urlpatterns += staticfiles_urlpatterns()
urlpatterns += i18n_patterns(
re_path(r'^admin/', admin.site.urls),
re_path(r'^', include('cms.urls')),
re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': {'cmspages': CMSSitemap, 'blog': BlogSitemap,}}),
re_path(r'^taggit_autosuggest/', include('taggit_autosuggest.urls')),
re_path(r'^filer/', include('filer.urls')),
)
admin.site.enable_nav_sidebar = False
Как я могу решить эту проблему? Заранее спасибо
URL страницы, на которую вы пытались перейти, был http://localhost:8000/en/accounts/login/?next=/en/private/
, но он не отображается в ваших URL, однако я вижу, что логин CMS отображается:
en/ ^ ^cms_login/$ [name='cms_login']
Так что вам нужно либо включить стандартные представления аутентификации Django, которые обычно указывают на /accounts/login
, либо перейти на cms_login/