NoReverseMatch: Обратное соответствие для '...' не найдено. '...' не является допустимой функцией представления или именем шаблона - для пути, включающего имя
У меня такая настройка:
# Django Project: core/urls.py
def redirect_index(request):
return redirect(reverse('account'), permanent=False)
urlpatterns = [
path('', redirect_index, name='index'),
path('account/', include('identity.urls'), name='account'),
]
# Django App: identity/urls.py
app_name = 'identity'
def redirect_index(request):
return redirect(reverse('identity:login'), permanent=False)
def view_login(request):
context = {"test_context": 'This is a test context'}
return render(request, "common/base.html", context)
urlpatterns = [
path('', redirect_index, name='index'),
path('login', view_login, name='login'),
]
Когда я посещаю http://localhost:8000/
, я получаю эту ошибку:
NoReverseMatch at /
Reverse for 'account' not found. 'account' is not a valid view function or pattern name.
Мне нужно вот что:
Если пользователь переходит по ссылке /
, она должна перенаправлять на /account/
, а оттуда - на /account/login
. Я знаю, что есть 2 редиректа, но я хотел бы иметь их отдельно, чтобы я мог настроить каждый отдельно. Но я получаю описанную выше ошибку. Похоже, что при наличии include
имя не может быть изменено на противоположное.
Конечно, когда я использую reverse('identity:index')
или reverse('identity:login')
вместо reverse('account')
в core/urls.py
, это работает.
Нет ли способа сделать это так, как я описал ранее?