Я получаю ошибку 404 при использовании login_required - PullRequest
0 голосов
/ 24 февраля 2019

Я новичок в Django и пытаюсь создать веб-сайт журнала обучения.

Когда я пытаюсь ограничить свои темы с помощью функции login_required, я получаю ошибку 404.

Здесьмой код:

from django.contrib.auth.decorators import login_required   

@login_required(login_url='/users/login/')
def topics(request):
""" Show all topics."""
topics = Topic.objects.order_by("date_added")
context = {"topics": topics}
return render(request, "learning_logs/topics.html", context)

Я получаю эту ошибку всякий раз, когда использую декоратор в своем коде:

Using the URLconf defined in learning_log.urls, Django tried these URL 
patterns, in this order:

admin/
users/ login [name='login']
users/ logout [name='logout']
users/ registration [name='register']
learning_logs/¨

The current path, users/login/, didn't match any of these. 

URL работает нормально, но когда я использую декоратор, он ломается.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

это означает, что вы не определили встроенный логин django в своем URL для его решения, вы можете просто пропустить это внутри себя urls.py

##urls.py
    from django.contrib.auth import views as auth_views
    urlpatterns = [
        path('users/login/', auth_views.login, name='login'),
        path('users/logout/', auth_views.logout, name='logout'),
        path('admin/', admin.site.urls),
    ]

, если вы уже сделали это, что вам нужновыполните следующие действия в представлениях

##views.py
from django.urls import reverse_lazy
from django.contrib.auth.decorators import login_required   

@login_required(login_url=reverse_lazy("login"))
def topics(request):
""" Show all topics."""
topics = Topic.objects.order_by("date_added")
context = {"topics": topics}
return render(request, "learning_logs/topics.html", context)
0 голосов
/ 24 февраля 2019

Похоже, у ваших users URL нет косых черт.Убедитесь, что URL-адреса в вашем users/urls.py заканчиваются косой чертой.Например:

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