Django вход в систему необходим, промежуточное ПО не работает - PullRequest
1 голос
/ 22 января 2020

Я новичок в Django, и я пытаюсь внедрить в свой проект django -login-required-middleware, чтобы иметь возможность направлять всех пользователей, которые не вошли на страницу индекса при входе в систему Посмотреть.

Я установил pip install django-login-required-middleware, добавил login_required в мои INSTALLED_APPS настройки и добавил login_required.middleware.LoginRequiredMiddleware в СРЕДНЕЕ ОБЕСПЕЧЕНИЕ. Затем в своих настройках я игнорирую представления, которые я хочу отображать пользователям, даже когда они не вошли в систему.

settings.py

LOGIN_REQUIRED_IGNORE_VIEW_NAMES = [
    'index',
    'register'
]

Однако, когда я запускаю сервер, Я получаю сообщение об ошибке

Не найдено: / account / login / [22 / Jan / 2020 12:27:56] "GET / account / login /? Next = / HTTP / 1.1" 404 4417

и в моем браузере:

Метод запроса: GET URL запроса: http://127.0.0.1: 8000 / account / login /? Next = /

Кажется, он автоматически направляет меня к учетным записям, хотя мое приложение называется movies_app, а не учетные записи. Кто-нибудь знает, как это исправить? Большое спасибо!

urls.py

from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from .views import editprofile

from . import views

app_name = 'movies_app'

urlpatterns = [
    path('', views.login, name='login'),
    path('browse/', views.index, name='index'),
    path('register/', views.register, name='register'),
    path('movies/', views.allMovies, name='allMovies'),
    path('movies/<int:pk>/', views.movie, name='movie'),
    path('movies/<int:pk>/rate', views.addRating, name='rate'),
    path('my-list/', views.myMovies, name='my-list'),
    path('my-list/<int:pk>/delete', views.deleteFavoriteMovie, name='favorite-movie-delete'),
    path('profile/', views.profile, name='register'),
    path('editprofile/', views.editprofile, name='editprofile'),
    path('logout/', views.logout, name='logout'),
    path('movie-video', views.movieVideo, name='movie-video')
]  + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

1 Ответ

1 голос
/ 22 января 2020

Ваше промежуточное ПО работает и перенаправляет вас на страницу входа по умолчанию, /accounts/login/.

Чтобы настроить страницу входа по умолчанию, добавьте LOGIN_URL к вашим настройкам, например,

LOGIN_URL = '/login/'

Наконец, у вас есть app_name = 'movies_app', so you should include this when referring to URL patterns from this app. For example, your LOGIN_REQUIRED_IGNORE_VIEW_NAMES` должно быть:

LOGIN_REQUIRED_IGNORE_VIEW_NAMES = [
     'movies_app:index',
     'movies_app:register'
]
...