0

我正在尝试实现自定义登录/注销功能。我的要求与内置的 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))

PS:我已经研究了 render() 方法..

return render(request,'appCenter.html',{'users':users})

我可以做这样的事情并将模板用作全局模板或其他东西吗?但我看到的问题是,一旦用户通过身份验证,我就必须将他重定向到 appCenter.html。

4

1 回答 1

4

不要这样做

您将纯文本密码存储在数据库中。这是不安全的。真的,不要这样做。

您没有展示任何使用 Django 的内置身份验证系统无法更好地完成的事情,该系统已经将user对象包含在每个模板中(通过上下文处理器)。用那个。

于 2013-03-05T19:49:05.367 回答