2014-04-22 3 views
0

django를 사용하여 로그인/로그 아웃 사용자 시스템을 구축하고 장고 인증 시스템을 사용하기 시작했습니다. , https://app.box.com/s/wmrtyal3mctb9hctsnomDjango : 내장 사용자 정의 필드 대신 사용자 정의 사용자 양식

먼저 :

그래서 나는과 같이 정의 장고 UserCreationForm을 사용하고 있습니다 :

views.py

from django.contrib.auth.forms import UserCreationForm 

def register(request): 
    if request.method == 'POST': 
     form = UserCreationForm(request.POST) 
     if form.is_valid(): 
      new_user = form.save() 
      return HttpResponseRedirect("/books/") 
    else: 
     form = UserCreationForm() 
    return render(request, "registration/register.html", { 
     'form': form, 
    }) 

그러나 다음과 같이이 양식은, 원치 않는 물건을 많이 렌더링 추가 된 정보를 없애고 싶습니다. 이렇게하는 좋은 방법이 있습니까? 이 작업을 수행하는 좋은 방법이 있습니까? UserCreationForm을 직접 편집하는 방법이 있습니까? 아니면 내 양식을 만들어야합니까?

둘째, 등록 페이지에 필수 입력란을 더 추가한다고 가정 해 봅시다. 가장 좋은 방법은 무엇입니까? 사람이 남성 또는 여성으로 등록하는 경우로 만들고 싶다고 가정 해 봅시다. 사용자 모델을 확장해야한다는 것을 알고 있지만 원래 사용자 모델과 확장 된 사용자 모델에 모두 어떻게 등록합니까?

조언을 주셔서 감사합니다, 나와 함께 맨발하십시오 - 이것은 UserCreationForm 클래스를 장고 인증 시스템 :

답변

2

를 사용하는 대신 확장 내 처음이다, 당신이 그것을 다시 작성해야합니다. 그것의 소스를 확인하십시오 here. 예를 들어

, 당신은 '위와 동일한 암호를 입력'이 줄을 제거 말한다 옆에있는 암호 필드에 텍스트를 제거하고 싶다면 :에서

help_text=_("Enter the same password as above, for verification.")) 

을 장고/장고 /있는 contrib/인증/(위의 링크에서) forms.py


편집 :이 방법은 단순히 더 편리하기 때문에 나는 당신이 그들을 확장보다는 폼 클래스를 다시 작성할 것을 제안 이유입니다. 장고 문서에서 : 당신이 내장 된 뷰를 사용하기를 원하지만이 기능에 대한 양식을 작성할 필요하지의 편의 을 원하지 않는 경우

의 인증 시스템은 몇 가지 기본 형태를 제공합니다 django.contrib.auth.forms

에있는 귀하의 사용자 모델 클래스를 확장한다면 그에 따라 양식 클래스를 변경해야합니다. 다시 문서에서 :

예상다시피, 내장 장고의 양식 및보기가 작업중인 사용자 모델에 대한 특정 가정을. 사용자 모델이 동일한 가정을 따르지 않는 경우 대체 양식을 정의하고 해당 양식을 인증보기의 구성의 일부로 전달해야 할 수 있습니다.당신은 단순히 제가 위에서 언급 한 바와 같이 당신이 forms.py 모듈로 UserCreationForm 클래스를 편집 할 것 UserCreationForm을 변경하려면

은 자세한 내용

에 대한 herehere를 참조하십시오.

질문에 언급 한 것처럼 등록 페이지에 더 많은 필드를 추가하려면 사용자 정의 사용자 모델을 만들어야합니다. 이 작업을 수행하는 방법에 대한 자세한 내용은 here을 참조하십시오.

+0

자세한 방법을 자세히 설명해 주시겠습니까? 소스 코드를 플러그인하고 자체 forms.py 파일에서 변경합니까? 설명하는 것을 좋아하지 않는다면 소스 파일 자체보다는 시작하는 것이 좋을 것입니다. 또한 왜 모델 클래스를 확장하는 대신이 작업을 수행하려고합니까? 이점은 무엇입니까? – ApathyBear

+0

@ApathyBear가 내 대답을 더 자세히 업데이트했습니다. 이 질문에 대한 답변을 얻으려면 답변으로 선택하십시오. – fr1tz

+0

대답 fr1tz에 감사드립니다. 매우 도움이됩니다. :) – ApathyBear