[英]The current path, account/login/, didn't match any of these?
我正在嘗試訪問我的項目(本地),並且收到此回溯:
追溯
Page not found (404)
Request Method:
GET
Request URL:
http://127.0.0.1:8000/account/login/
Using the URLconf defined in tutorial.urls, Django tried these URL patterns, in this order:
[name='login_redirect']
admin/
account/ ^$
account/ ^login$
account/ ^logout$
account/ ^register$ [name='register']
account/ ^profile$ [name='view_profile']
account/ ^profile/edit$ [name='edit_profile']
account/ ^change-password$ [name='change_password']
account/ ^reset-password$ [name='reset_password']
account/ ^reset-password/done$ [name='password_reset_done']
account/ ^reset-password/confirm(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A- Za-z]{1,13}-[0-9A-Za-z]{1,23})/$ [name='password_reset_confirm']
account/ ^reset-password/complete$ [name='password_reset_complete']
The current path, account/login/, didn't match any of these.
主/urls.py
from django.contrib import admin
from django.urls import path, re_path, include
from tutorial import views
urlpatterns = [
path('', views.login_redirect, name='login_redirect'),
path('admin/', admin.site.urls),
path('account/', include('accounts.urls')),
]
項目/urls.py
from django.conf.urls import url
from . import views
from django.contrib.auth import views as auth_views
from django.contrib.auth.views import (
PasswordResetView,
PasswordResetDoneView,
PasswordResetConfirmView,
PasswordResetCompleteView,
)
from django.urls import re_path
urlpatterns = [
url(r'^$', views.home),
url(r'^login$', auth_views.LoginView.as_view(template_name='accounts/login.html')),
url(r'^logout$', auth_views.LogoutView.as_view(template_name='accounts/logout.html')),
url(r'^register$', views.register, name='register'),
url(r'^profile$', views.view_profile, name='view_profile'),
url(r'^profile/edit$', views.edit_profile, name='edit_profile'),
url(r'^change-password$', views.change_password, name='change_password'),
url(r'^reset-password$', PasswordResetView.as_view(), name='reset_password'),
url(r'^reset-password/done$', PasswordResetDoneView.as_view(), name='password_reset_done'),
url(r'^reset-password/confirm(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,23})/$',
PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
url(r'^reset-password/complete$', PasswordResetCompleteView.as_view(), name='password_reset_complete'),
]
中間件.py
import re
from django.conf import settings
from django.shortcuts import redirect
class LoginRequiredMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
response = self.get_response(request)
return response
def process_view(self, request, view_func, view_args, view_kwargs):
assert hasattr(request, 'user')
if not request.user.is_authenticated:
if True:
return redirect(settings.LOGIN_URL)
設置.py
LOGIN_REDIRECT_URL = '/account/login'
LOGIN_URL = '/account/login/'
這里有什么問題?。 重定向有效,我有一種感覺,它在 urlpatterns 中,但終生無法弄清楚。 今天把我逼瘋了。 感謝您的幫助,並對文章感到抱歉!
您的LOGIN_URL
設置有一個尾部斜杠:
LOGIN_URL = '/account/login/'
但是您的login
URL 模式不允許尾部斜杠。
url(r'^login$', auth_views.LoginView.as_view(template_name='accounts/login.html')),
您可以從LOGIN_URL
刪除斜杠。 但是,Django 中的通常做法是在 URL 中包含尾部斜杠。 然后,默認行為會將來自/accounts/login
任何請求重定向到/accounts/login/
並帶有斜杠。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.