簡體   English   中英

使用login_required時出現404錯誤

[英]I am getting a 404 error when using login_required

我是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. 

網址可以正常使用,但是當我使用裝飾器時,它會中斷。

您的users網址似乎沒有斜杠。 確保您的users/urls.py中的URL以斜杠結尾。 例如:

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

這意味着您尚未在url中定義django內置登錄名來解決該問題,您可以在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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM