我正在尝试登录保护我的某些页面,包括我的信息中心。以下是我网站根目录的仪表板视图:sitename.com /
public void onClick4(View v)
{
if (option4Text.getText().toString().equals(toString(answer))) {
TextView questionText = (TextView) findViewById(R.id.question);
correctAnswer();
questionText.setText(questionTxt + "");
}
}
我的项目网址文件:
@login_required
def index(request):
print(request.session['user_email'])
context_dict = {}
return render(request, 'dashboard/index.html', context_dict)
我的信息中心应用程序网址文件:
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
]
当我尝试注销然后转到/我收到一条消息,指出http://127.0.0.1:8000/welcome?next=/与我的项目网址文件中的任何网址都不匹配。所以登录检查工作正常,当设置下一个GET变量时,它无法找出url。
答案 0 :(得分:1)
当您使用来自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 :)
答案 1 :(得分: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')),
]
现在,我不会在网址中的下一个变量中出现任何错误:
如果用户成功登录,我有一个javascript文件抓取next的值并重定向到它。 *我使用ajax来验证用户。