2016-12-30 54 views
-1

我正在尝试登录保护我的一些页面,包括我的仪表板。这里是我的网站的根目录我的仪表板视图:sitename.com/Django在验证用户身份时找不到重定向url

@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=/不匹配我的项目URL文件中的任何URL。所以登录检查正在工作,它只是在下一次设置GET变量时找不到url。

+1

url(r'^ $',include('dashboard.urls')),这是使用doller $给定urls文件位置的错误方法。使用$ doller仪表板网址将不起作用。 –

回答

0

我终于得到它的工作。这是我的路线:

欢迎的应用程序路径(输入/输出应用程序的日志记录)

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中的下一个变量:

http://127.0.0.1:8000/welcome?next=/

如果用户成功登录,我有一个JavaScript文件抓取下一个值并重定向到它。 *我使用ajax来验证用户。

1

由于您使用的是django从contrib.auth的默认登录名,请尝试通过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 :)

相关问题