0

저는 ModelForm을 사용하고 장고의 인증 시스템을 사용하지 않습니다. 나는 또한 무작위 암호를 설정하려고 노력하고 있지만 문제를 일으키는 지 확실하지 않기 때문에 약간의 주석을 달았습니다.장고 양식이 제출되지만 데이터베이스에 저장되지 않습니다

현재 '다음'은 '성공'을 반환하지만 데이터베이스에는 저장하지 않습니다.

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) 

답변

0

아마도 사용자가 데이터베이스에 이미있을 때 발생합니다. 사용자가 존재하지 않을 때에 만 실제로 데이터를 설정하기 때문입니다. 모든 필드 설정 코드를 들여 쓰기 수준으로 이동하십시오.

실제로 필드를 수동으로 설정해서는 안됩니다. ModelForm을 사용하는 전체 지점은 form = UserForm(data, instance=user)이고 양식이 유효하면 form.save()입니다.

+0

이것은 다른 곳에서 발견 한 제안입니다. 아이디어는 사용자 이름이 있는지 확인한 다음 등록 양식이 저장되지 않은 경우에만 저장한다는 것입니다. 임의의 고유 한 이름으로 테스트하고 있으므로 사용자가 이미 존재하는 것처럼 왜 작동하는지 확신 할 수 없습니다. 그것은 사용자 이름이 있는지 확인하지 않으면 작동합니다. – charmarel

+1

인쇄물을 넣고 어떤 사용자에게 인쇄되는지 확인하십시오. –

관련 문제