[英]I am facing an error when using the @login_required decorator, it shows TemplateDoesNotExist at /accounts/login/
[英]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.