Как изменить конфигурацию корневого URL-адреса, чтобы использовать пространство имен для пользовательских URL-адресов - PullRequest
0 голосов
/ 07 ноября 2018

URL для всего сайта:

from user import urls as user_urls
app_name='user'

urlpatterns = [
    re_path(r'^user/',include(user_urls)),    
]

Поскольку приложение admin также определяет шаблоны URL с именами login и logout в django/contrib/admin/sites.py. Мне нужно, чтобы Джанго указал на user app.

Он все еще указывает на registration/login.html (т.е. приложение администратора). Я пробовал пространство имен, но оно было удалено в Django 2.0.

user / urls.py:

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'
    ),
]

1 Ответ

0 голосов
/ 07 ноября 2018

Чтобы получить доступ к 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

...