0

ModelFormを使用していますが、Djangoの認証システムを使用していません。私もランダムなパスワードを設定しようとしていますが、それが問題を引き起こしているかどうかわからないため、そのビットをコメントアウトしました。

現在、以下は「success」を返しますが、データベースには保存されません。

def registration(request):
if request.POST:
    data = request.POST.copy()
    data['date_joined'] = datetime.date.today()
    data['last_login'] = datetime.datetime.now()
    form = UserForm(data)
    if form.is_valid():
        try:
            User.objects.get(username=form.cleaned_data['username'])
        except User.DoesNotExist:
            #ran_pw = User.objects.make_random_password(length=12)
            #user.set_password(ran_pw)
            user = User()
            user.username = form.cleaned_data['username']
            user.first_name = form.cleaned_data['first_name']
            user.m_init = form.cleaned_data['m_init']
            user.last_name = form.cleaned_data['last_name']
            user.institution = form.cleaned_data['institution']
            user.department = form.cleaned_data['department']
            user.phone = form.cleaned_data['phone']
            user.email = form.cleaned_data['email']
            user.save()
            return HttpResponse('success')
    else:
        return HttpResponse(form.errors)
else:
    form = UserForm()
    return HttpResponse(form.non_field_errors)
4

1 に答える 1

0

おそらくこれは、ユーザーがデータベースにすでに存在している場合に発生します。これは、ユーザーが存在しない場合にのみ実際にデータを設定するためです。すべてのフィールド設定コードを1つのインデントレベルに戻します。

実際には、フィールドを手動で設定するべきではありません。ModelFormを使用することの全体的なポイントは、設定することです。form = UserForm(data, instance=user)その後、フォームが有効な場合は、設定するだけですform.save()

于 2012-07-17T21:58:09.663 に答える