112

次のコードで Django プロジェクトに新しいユーザーを作成しようとしていますが、強調表示された行で例外が発生します。

def createUser(request):
    userName = request.REQUEST.get('username', None)
    userPass = request.REQUEST.get('password', None)
    userMail = request.REQUEST.get('email', None)

    # TODO: check if already existed

    **user = User.objects.create_user(userName, userMail, userPass)**
    user.save()

    return render_to_response('home.html', context_instance=RequestContext(request))

何か助けはありますか?

4

5 に答える 5

23

実際の値を渡していて、渡していないことを確認しましたNoneか?

from django.shortcuts import render

def createUser(request):
    userName = request.REQUEST.get('username', None)
    userPass = request.REQUEST.get('password', None)
    userMail = request.REQUEST.get('email', None)

    # TODO: check if already existed
    if userName and userPass and userMail:
       u,created = User.objects.get_or_create(userName, userMail)
       if created:
          # user was created
          # set the password here
       else:
          # user was retrieved
    else:
       # request was empty

    return render(request,'home.html')
于 2012-04-29T17:18:54.307 に答える
13

での一括ユーザー作成set_password

私はあなたがいくつかのテストユーザーを作成していますが、bulk_createはるかに高速ですが、それを使用create_userすることはできません.

set_passwordハッシュ化されたパスワードを生成する別の方法は次のとおりです。

def users_iterator():
    for i in range(nusers):
        is_superuser = (i == 0)
        user = User(
            first_name='First' + str(i),
            is_staff=is_superuser,
            is_superuser=is_superuser,
            last_name='Last' + str(i),
            username='user' + str(i),
        )
        user.set_password('asdfqwer')
        yield user

class Command(BaseCommand):
    def handle(self, **options):
        User.objects.bulk_create(iter(users_iterator()))

パスワードハッシュに関する質問: Django で Bcrypt を使用してパスワードを暗号化する方法

Django 1.9 でテスト済み。

于 2016-05-14T09:23:53.273 に答える