到目前为止,我已经使用 django 的默认身份验证和登录方法作为我的项目的登录代码。请参阅下面的代码,
“我的登录代码”
def login(request):
if request.method == 'POST':
username = request.POST.get('username', '')
password = request.POST.get('password', '')
if(len(username.strip(' ')) == 0):
return render_to_response('login.html', {'error_message': 'Username should not be empty', 'username': username}, context_instance=RequestContext(request))
if(len(password.strip(' ')) == 0):
return render_to_response('login.html', {'error_message': 'Password should not be empty', 'username': username}, context_instance=RequestContext(request))
authuser = authenticate(username=username, password=password)
if authuser and authuser.is_active:
try:
login(request, authuser)
except (RuntimeError, TypeError, NameError):
errmessage = ERROR_MESSAGE % (RuntimeError, TypeError, NameError)
CapturLog().logdata(request, 'LoginError', 'Login', errmessage)
else:
CapturLog().logdata(request, 'Login', 'Login', 'Successfully Logged In')
return HttpResponseRedirect(reverse('index:home'))
else:
return render_to_response('login.html', {'error_message': 'Invalid User', 'username': username}, context_instance = RequestContext(request))
return render_to_response('login.html', context_instance=RequestContext(request))
这段代码运行良好,但我不想使用 django 的默认方法。相反,我想使用我自己的方法来检查身份验证和登录。是否可能? 我在上面的代码中添加了一些行以进行身份验证,如下所示,
authuser = _authenticate_check(username, password)
def _authenticate_check(username=None, password=None):
try:
if '@' in username:
user = User.objects.get(email=username)
else:
user = User.objects.get(username=username)
except User.DoesNotExist:
return None
# now check the password
if user.check_password(password):
return user
然后,如果我尝试登录(请求,用户)
,它不起作用。它显示此行中的错误(即未找到后端)。
是否可以编写手动代码进行身份验证和登录,而不是使用 django 的默认方法?
提前致谢 !
最佳答案
简单的回答:当然你可以自己写。这个模块只是一个 Python 模块,专为您构建,无需大量工作即可使用。
真正的答案:他们可能会做你想要的一切,甚至更多,Django 的整个哲学是 DRY(不要重复自己),所以如果它是内置的并且可以处理你的情况,请使用它而不是重新 -发明轮子。
您当然可以编写自己的身份验证方法,但您在这篇文章中没有提出一个很好的论据。仅仅因为您已经仔细阅读了文档并且感觉不舒服,那么遵守是不够的。查看当前可用的工具是否有效。如果没有,那么是时候定义为什么/为什么不以及你需要什么来完成你所追求的目标。
如果您花时间了解它们如何协同工作,内置 session 、用户、组将会非常棒。
关于python - 是否可以在不使用 django 的身份验证和登录方法的情况下编写登录功能的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749726/