Я пытаюсь добавить этот URL в urlpatterns моего приложения (т.е. MyProject / MyApp / urls.py):

url(r'^login/$', auth_views.LoginView.as_view(), name='login')

У меня есть этот фрагмент в одном из моих шаблонов:

<a href="{% url 'login' %}">Login</a>

Обычно, нажав на ссылку, вы успешно попадаете на страницу входа. Однако, когда я пытаюсь добавить пространство имен в мои URL-адреса (app_name = my_namespace) и изменить обратное на

<a href="{% url 'my_namespace:login' %}">Login</a>

Происходит сбой, когда я нажимаю на ссылку и получаю ошибку

Reverse for 'login' not found. 'login' is not a valid view function or 
pattern name.

В то время как все другие URL-адреса, с которыми я обращаюсь, работают с пространством имен, происходит сбой только входа в систему. Есть идеи почему?

Изменить: MyProject / MyProject / urls.py:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^clubinfo/', include('ClubInfo.urls')),
]

MyProject / MyApp / urls.py :

app_name = 'clubinfo'

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^register/$', views.register, name='register'),
    url(r'^login/$', auth_views.LoginView.as_view(), name='login'),
]

Фрагмент шаблона:

<a href="{% url 'clubinfo:index' %}">Home</a>
<a href="{% url 'clubinfo:login' %}">Login</a>
<a href="{% url 'clubinfo:register' %}">Register</a>

Я могу нажать Дом и Зарегистрироваться, а не войти

Редактировать 2: auth_views из этого импорта:

from django.contrib.auth import views as auth_views

Я думаю, что это может быть связано с тем, почему программа вызывает ошибку.

0
Michael Chen 28 Авг 2017 в 02:19

3 ответа

Лучший ответ

Оказывается, проблема была в моем файле login.html, который Django отображает в своем LoginView. Я не использовал пространство имен в одном из моих обращений в этом файле.

1
Michael Chen 29 Авг 2017 в 03:52

В вашем проекте URL делают это:

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^clubinfo/', include('ClubInfo.urls', namespace='clubinfo')),
]

Сейчас в Clubinfo URL: удалить

app_name = 'clubinfo'

Снова запустите сервер и попробуйте, что мой способ работы

0
Parias Lunkamba Mukeba 29 Авг 2017 в 01:50

Я считаю, что ваш

app_name = ' clubinfo '

, но ваши urlpatterns

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^clubinfo/', include('**ClubInfo**.urls')),
]
0
开发者Korbin 3 Ноя 2018 в 01:34