我正在尝试实现自定义登录/注销功能。我的要求与内置的django登录功能略有不同。
因此,我必须以一种方式实现此功能,我可以在数据库中放置一个值0/1来检查用户是否已登录。我有一个布尔值。
这里的问题实际上是:我应该如何传递一个用户对象/一个变量,告诉我我的用户已登录(在我的情况下:users.is_logged_in = True
)到每个html模板,以便用户(和我的应用程序)知道它已登录。此外,他应该能够通过单击每个html页面上的链接注销。
当用户成功登录时,是否可以创建任何全局模板并制作占位符类型的东西?
我的代码是:
def checkIfUserIsValid(request, template_name='appCenter.html'):
email = str(request.POST.get('email','')).strip()
password = str(request.POST.get('password','')).strip()
try:
users = Users.objects.get(email = email, password = password)
users.is_logged_in = True
users.save()
return direct_to_template(request, template_name, context_instance=RequestContext(request))
except Users.DoesNotExist:
incorrectUserOrPassError = "Incorrect Username or Password. Please try again."
return render_to_response('index.html', {'incorrectUserOrPassError':incorrectUserOrPassError},
context_instance=RequestContext(request))
def logOutUser(request, template_name='index.html'):
return direct_to_template(request, template_name, context_instance=RequestContext(request))
P.S:我已经研究过render()方法..
return render(request,'appCenter.html',{'users':users})
我可以做这样的事情并将模板用作全局模板吗?但我看到的问题是,我必须在用户通过身份验证后立即将用户重定向到appCenter.html。
答案 0 :(得分:4)
不要这样做。
您正在将纯文本密码存储在数据库中。这是不安全的。真的,不要这样做。
您没有使用Django的内置身份验证系统显示任何无法做到的事情,该系统已在每个模板中包含user
对象(通过上下文处理器)。使用它。