【问题标题】:using User.objects.get_or_create() gives invalid password format in django?使用 User.objects.get_or_create() 在 django 中给出无效的密码格式?
【发布时间】:2014-05-20 09:17:10
【问题描述】:
python manage.py shell

>>> from django.contrib.auth.models import User
>>> u=User.objects.get_or_create(username="testuser2",password="123")
>>> u
(<User: testuser2>, True)

似乎它正确地创建了User。但是当我登录管理员时 http://127.0.0.1:8000/admin/auth/user/3/, 我看到这条信息输入密码 Invalid password format or unknown hashing algorithm.

截图也附上了。为什么会这样以及如何从 shell 创建User objects。我实际上正在编写一个为我的项目创建多个用户的填充脚本?

【问题讨论】:

    标签: django django-admin django-users


    【解决方案1】:

    您需要使用User.set_password method to set a raw password

    例如,

    from django.contrib.auth.models import User
    user, created = User.objects.get_or_create(username="testuser2")
    user.set_password('123')
    user.save()
    

    【讨论】:

      【解决方案2】:

      除了我们不想设置现有用户的密码之外几乎是正确的

      from django.contrib.auth.models import User
      user, created = User.objects.get_or_create(username="testuser2")
      if created:
                # user was created
                # set the password here
                user.set_password('123')
                user.save()
             else:
                # user was retrieved
      

      【讨论】:

        【解决方案3】:

        documentation中所述。

        创建用户最直接的方法是使用包含的create_user()帮助函数。

        from django.contrib.auth.models import User
        user = User.objects.create_user(username="testuser2",password="123")
        

        【讨论】:

          猜你喜欢
          • 2013-02-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          • 2020-11-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多