Как реализовать модель для регистрации/авторизации пользователей? - Python

Узнай цену своей работы

Формулировка задачи:

Всем привет. Собственно, меня уже направили на верный путь, как лучше это делать, используя встроенный функционал Django. Но у меня все же остался вопрос, почему мой код не работает. Немного истории: я пытался реализовать собственную модель для регистрации/авторизации пользователей. Модель:
Листинг программы
  1. from django.db import models
  2.  
  3. class Users(models.Model):
  4. """
  5. This class is used for user manipulation
  6. """
  7. userName = models.CharField(max_length=50, unique=True)
  8. userMail = models.CharField(max_length=50, unique=True)
  9. userPass = models.CharField(max_length=32)
  10. userRole = models.CharField(max_length=12, default='user')
  11. def __unicode__(self):
  12. # return self.userPass
  13. return '%s, %s, %s, %s' % (self.userName, self.userMail, self.userPass, self.userRole)
Вьюха (в переменную error я вывожу разный контент, для себя)
Листинг программы
  1. def login(request):
  2. if request.method == 'POST':
  3. usermail = request.POST['usermail']
  4. password = request.POST['password']
  5. if usermail == '' or password == '':
  6. error = u'Все поля должны быть заполнены'
  7. return render(request, 'login.html', {'error': error})
  8. password2 = hashlib.md5(password).hexdigest()
  9. try:
  10. sql = "SELECT * FROM users_users WHERE userMail=usermail"
  11. user = str(Users.objects.raw(sql)[0])
  12. userInfo = user.split(',')
  13. if str(password2) == str(userInfo[2]):
  14. return render(request, 'login.html', {'error': userInfo}, context_instance=RequestContext(request))
  15. else:
  16. error = u'Введенные имя пользователя или пароль неверны'
  17. return render(request, 'login.html', {'error': userInfo[2], 'error2': password2}, context_instance=RequestContext(request))
  18. except:
  19. error = u'Пользователя с адресом %s не существует' %usermail
  20. return render(request, 'login.html', {'error': error}, context_instance=RequestContext(request))
  21. return render(request, 'login.html', context_instance=RequestContext(request))
Проверка не проходит в условии:
Листинг программы
  1. if str(password2) == str(userInfo[2]):
Я выводил оба значения md5 они точно одинаковые + привожу их к строке Вопрос: почему они все же не равны? Я в питоне новичок, может не понимаю каких-то особенностей языка?

Решение задачи: «Как реализовать модель для регистрации/авторизации пользователей?»

textual
Листинг программы
  1. ======
  2. constantine@alpha ~ $ echo -n "pass" | md5sum
  3. 1a1dc91c907325c69271ddf0c944bc72 -
  4. constantine@alpha ~ $ mdcrack 1a1dc91c907325c69271ddf0c944bc72
  5. <<System>> MDcrack v1.2 is starting.
  6. <<System>> Using default charset : abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ
  7. <<System>> Max pass size = 12 >> Entering MD5 Core 1.
  8.  
  9. Password size: 1
  10.  
  11. Password size: 2
  12.  
  13. Password size: 3
  14.  
  15. Password size: 4
  16.  
  17.  
  18. ----------------------------------------
  19. Collision found ! => pass
  20.  
  21.  
  22. Collision(s) tested : 4601346 in 0 second(s), 245 millisec, 368 microsec.
  23. Average of 18752836.0 hashes/sec.
  24. ===

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы