Django 및 Python을 처음 사용합니다. 나는 문서를 읽었고 표준 로그인 시스템은 사용자 로그인을 위해 전자 메일과 암호를 사용하기 때문에 나에게 좋지 않습니다.사용자 정의 Django 로그인, 비밀번호를 비교할 수 없습니다.
그래서 저는 뷰와 모델로 새로운 앱을 만들었습니다.
내 로그인 기능은 다음과 같습니다.
def login(request):
if request.method == 'POST':
usermail = request.POST['usermail']
password = request.POST['password']
password = hashlib.md5(password).hexdigest()
if usermail == '' or password == '':
error = u'All fields should be filled'
return render(request, 'login.html', {'error': error})
try:
sql = "SELECT * FROM users_users WHERE userMail=usermail"
user = str(Users.objects.raw(sql)[0])
userInfo = user.split(',')
if userInfo[2] = password:
return render(request, 'login.html', {'error': userInfo}, context_instance=RequestContext(request))
else:
error = u'Email or password is not valid'
return render(request, 'login.html', {'error': error}, context_instance=RequestContext(request))
except:
error = u'User with an email %s does not exist' %usermail
return render(request, 'login.html', {'error': error}, context_instance=RequestContext(request))
return render(request, 'login.html', context_instance=RequestContext(request))
데이터베이스의 암호와 사용자가 제공 한 암호를 비교하려고하면 문제가 발생합니다. 뷰에 대한
모델 :
class Users(models.Model):
"""
This class is used for user authorization
"""
userName = models.CharField(max_length=50, unique=True)
userMail = models.CharField(max_length=50, unique=True)
userPass = models.CharField(max_length=32)
userRole = models.CharField(max_length=12, default='user')
def __unicode__(self):
# return self.userPass
return u'%s, %s, %s, %s' % (self.userName, self.userMail, self.userPass, self.userRole)
어떤 문제가 발생합니까? – dbf
리틀 바비 테이블. 그게 어떻게됩니까 :) –
나는 파이썬과 장고에 익숙하지 않지만 프로그래밍에 전혀 익숙하지 않기 때문에 여기서는 보안을 조작하지 않고 데이터베이스에서 패스를 얻고 싶다. –