Django 在验证用户时找不到重定向 url
Django can't find redirect url when authenticating user
我正在尝试登录以保护我的一些页面,包括我的仪表板。这是我网站根目录下的仪表板视图:sitename.com/
@login_required
def index(request):
print(request.session['user_email'])
context_dict = {}
return render(request, 'dashboard/index.html', context_dict)
我的项目url文件:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^job/', include('job.urls')),
url(r'^welcome/', include('welcome.urls')), //the app for logging in
url(r'^$', include('dashboard.urls')), //main dashboard app
# s
]
我的仪表板应用程序 url 文件:
urlpatterns = [
url(r'$', views.index, name='index'),
url(r'^signup/$', views.signup, name='signup'),
url(r'^login/$', views.auth_login, name='login'),
url(r'^logout/$', views.user_logout, name='logout'),
]
当我尝试注销然后转到 / 我收到一条消息说 http://127.0.0.1:8000/welcome?next=/ 与我的项目 urls 文件中的任何 urls 不匹配。所以登录检查工作正常,只是在设置 GET 变量 next 时无法弄清楚 url 。
由于您正在使用来自 contrib.auth 的 django 默认登录,请尝试传递 next as an extra_context dict
。
url(r'^login/$', 'django.contrib.auth.views.login',
{'template_name': 'login.html', 'extra_context': {'next':'/'}})
另一个解决方案是在 login_required 装饰器本身
中指定登录名 url
@login_required(login_url='/login/')
def index(request):
print(request.session['user_email'])
context_dict = {}
return render(request, 'dashboard/index.html', context_dict)
让我们知道这是否解决了您的问题。 HTH :)
我终于让它工作了。这是我的路线:
欢迎应用程序路由(用于记录的应用程序 in/out)
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^signup/$', views.signup, name='signup'),
url(r'^/login/$', views.auth_login, name='login'),
url(r'^/logout', views.user_logout, name='logout'),
]
整个项目的主要路线:
urlpatterns = [
url(r'^welcome', include('welcome.urls')),
url(r'^', include('dashboard.urls')),
]
现在 url 中的下一个变量没有任何错误:
我有一个 javascript 文件获取 next 的值并在用户成功登录时重定向到它。 *我使用 ajax 来验证用户。
我正在尝试登录以保护我的一些页面,包括我的仪表板。这是我网站根目录下的仪表板视图:sitename.com/
@login_required
def index(request):
print(request.session['user_email'])
context_dict = {}
return render(request, 'dashboard/index.html', context_dict)
我的项目url文件:
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^job/', include('job.urls')),
url(r'^welcome/', include('welcome.urls')), //the app for logging in
url(r'^$', include('dashboard.urls')), //main dashboard app
# s
]
我的仪表板应用程序 url 文件:
urlpatterns = [
url(r'$', views.index, name='index'),
url(r'^signup/$', views.signup, name='signup'),
url(r'^login/$', views.auth_login, name='login'),
url(r'^logout/$', views.user_logout, name='logout'),
]
当我尝试注销然后转到 / 我收到一条消息说 http://127.0.0.1:8000/welcome?next=/ 与我的项目 urls 文件中的任何 urls 不匹配。所以登录检查工作正常,只是在设置 GET 变量 next 时无法弄清楚 url 。
由于您正在使用来自 contrib.auth 的 django 默认登录,请尝试传递 next as an extra_context dict
。
url(r'^login/$', 'django.contrib.auth.views.login',
{'template_name': 'login.html', 'extra_context': {'next':'/'}})
另一个解决方案是在 login_required 装饰器本身
中指定登录名 url@login_required(login_url='/login/')
def index(request):
print(request.session['user_email'])
context_dict = {}
return render(request, 'dashboard/index.html', context_dict)
让我们知道这是否解决了您的问题。 HTH :)
我终于让它工作了。这是我的路线:
欢迎应用程序路由(用于记录的应用程序 in/out)
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^signup/$', views.signup, name='signup'),
url(r'^/login/$', views.auth_login, name='login'),
url(r'^/logout', views.user_logout, name='logout'),
]
整个项目的主要路线:
urlpatterns = [
url(r'^welcome', include('welcome.urls')),
url(r'^', include('dashboard.urls')),
]
现在 url 中的下一个变量没有任何错误:
我有一个 javascript 文件获取 next 的值并在用户成功登录时重定向到它。 *我使用 ajax 来验证用户。