Чтобы получить доступ к URL-адресам по пространству имен в django 2, вам нужно переместить атрибут app_name
, чтобы user/urls.py
стал;
app_name = 'user'
urlpatterns = [
path(r'', RedirectView.as_view()),
re_path(
r'^login/$',auth_views.LoginView.as_view(),
{'template_name':'user/login.html'},
name='login'
),
re_path(
r'^logout/$',auth_views.LogoutView.as_view(),
{
'template_name':'user/logged_out.html',
'extra_context':{'form':AuthenticationForm }
},
name='logout'
),
]
URL-адреса, определенные в users.urls
, будут иметь пространство имен приложения user
.
В качестве альтернативы вы можете сделать URL-адрес пространства имен в том же файле, выполнив;
user_patterns = ([
path(r'', RedirectView.as_view()),
re_path(
r'^login/$',auth_views.LoginView.as_view(),
{'template_name':'user/login.html'},
name='login'
),
re_path(
r'^logout/$',auth_views.LogoutView.as_view(),
{
'template_name':'user/logged_out.html',
'extra_context':{'form':AuthenticationForm }
},
name='logout'
),
], 'user')
urlpatterns = [
re_path(r'^user/', include(user_patterns)),
]
Документы по этому вопросу можно найти здесь; https://docs.djangoproject.com/en/2.0/topics/http/urls/#url-namespaces-and-included-urlconfs