Получаю ошибку при попытке добавить систему регистрации и аутентификации пользователей на Django
Прохожу туториал по Django, и застрял в разделе, когда нужно добавить аутентификацию и регистрацию пользователей, хотя все делал по туториалу. Вот ссылка на этот раздел: https://tutorial-extensions.djangogirls.org/en/authentication_authorization
Конкретно о проблеме:
При попытке запустить сервер оно выдает ошибку RecursionError: maximum recursion depth exceeded while calling a Python object
Вот полный текст ошибки:
Blockquote File "C:\Users\Admin\django_boys\myvenv\lib\site-packages\django\urls\resolvers.py", line 400, in check messages.extend(check_resolver(pattern)) File "C:\Users\Admin\django_boys\myvenv\lib\site-packages\django\core\checks\urls.py", line 23, in check_resolver return check_method() File "C:\Users\Admin\django_boys\myvenv\lib\site-packages\django\urls\resolvers.py", line 401, in check messages.extend(self._check_custom_error_handlers()) File "C:\Users\Admin\django_boys\myvenv\lib\site-packages\django\urls\resolvers.py", line 418, in _check_custom_error_handlers signature = inspect.signature(handler) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\lib\inspect.py", line 3130, in signature return Signature.from_callable(obj, follow_wrapped=follow_wrapped) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\lib\inspect.py", line 2879, in from_callable return _signature_from_callable(obj, sigcls=cls, File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\lib\inspect.py", line 2330, in _signature_from_callable return _signature_from_function(sigcls, obj, File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\lib\inspect.py", line 2194, in _signature_from_function parameters.append(Parameter(name, annotation=annotation, File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\lib\inspect.py", line 2517, in init self._kind = _ParameterKind(kind) File "C:\Users\Admin\AppData\Local\Programs\Python\Python39\lib\enum.py", line 360, in call return cls.new(cls, value) RecursionError: maximum recursion depth exceeded while calling a Python object
Я полагаю, что причина ошибки в неправильном синтаксисе, либо в указании пути, либо в неправильно импорте модулей в файле urls.py.
Вот его код:
from . import views
from django.contrib.auth import views as auth_views
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post/<int:pk>', views.post_detail, name='post_detail'),
# и т.п.
# до добавления последующих 4 строк кода, все работало нормально.
path('admin/', admin.site.urls),
path('accounts/login/', auth_views.LoginView.as_view(), name='login'),
path('accounts/logout/', auth_views.LogoutView.as_view(next_page='/'), name='logout'),
path('', include('blog.urls')),
]
Изначально Django просто путало две одинаковых названия
views, поэтому второйviewsпереименовал наauth_views.Когда поменял, появилась уже эта проблема, о котором и пишу.
Буду рад вашим советам.
ps: уровень владения Django, можно сказать нулевой.
Ответы (2 шт):
LoginView и LogoutView это имена ваших view-классов, а так же это имена классов реализующих авторизацию и выход с сайта. Вкратце поменяйте названия выше упомянутых классов
Оказывается проблема была в последней строке, т.е. в :
path('', include('blog.urls')),
Я поменял аргумента include и получилось вот такой код:
path('', include('django.contrib.auth.urls')),
И проблема была решена.
Не скажу, что это самое правильное и эффективное решение, но если у вас возникнет такая же проблема, поищите причину сначала в include().
И да, полезно будет почитать про роль include().