2013-01-07 2 views
1

나는 같은 아이디라는 간단한 모델을 만들기 위해 노력하고 있어요 :장고 모델의 PasswordField?

class User(models.Model): 
    username = models.CharField(max_length=100) #Id is automatically generated by Django 
    password = models.CharField(max_length=100) 

이 내가 만들려고하고 장고 모델입니다. 문제는 사용자 이름과 암호 특성은 CharField로 저장되는 반면 암호는 * * 또는 암호화 된 형식으로 데이터베이스에 저장해야합니다. 그들은 장고에서 CharField와 같은 PasswordField를 갖고 있지 않은 것처럼 보입니다. 가장 좋은 방법은 무엇입니까?

+0

*로 입력 된 비밀번호를 *로 표시하려고합니까, 아니면 DB에 삽입 하시겠습니까? 전에는 장고 양식을 사용하고, CharField에 위젯을 추가해야합니다. (여기 [look] [https://code.djangoproject.com/wiki/PasswordField]), 후자의 경우에는 아무 것도 없습니다. 암호를 받아서 암호화하고 db에 넣으십시오. – mtndesign

+2

직접 인증을 시도하거나 작성하지 마십시오. 너는 틀릴거야. Django에 내장 된 인증 라이브러리를 사용하십시오. –

답변

1

THE DOCS 당이

password = forms.CharField( 
    widget=forms.PasswordInput(render_value=False), 
    label="Your Password" 
) 

있어이 당신의 저장 부분에 대해

당신의 렌더링 형태로

<input type="password" /> 

에 빌려주으로, 암호의 해시를 저장해야합니다 * 목록이 아니거나 어쨌든 검색 할 수 없습니다. 당신은 당신이 구현할 때 큰 관심을 지불해야 물론 hashlib 모듈

user.password = hashlib.sha224(user.password).hexdigest() 
user.save() 

를 사용할 수 있습니다. 위의 내용은 간단한 예제 일 뿐이며, 추가 학습을 위해 문서를 확인하십시오.

+0

데이터베이스에도 삽입하고 싶습니다. – user1881957

+0

어떻게하면됩니까? – user1881957

+0

updated my answer –

0

장고 사용자 모델과 함께 제공됩니다. django.contrib.auth.models 아래에 있습니다. 모델에는 필요한 모든 것이 있습니다. 이미 모델이 있으면 모델을 만들기 시작하는 것이 바보입니다. 또한 django.contrib.auth.forms에 사용자 생성 및 인증 양식이 있고, 사용자 모델의 set_password 메소드와 같은 것들이 있으며 더 많은 것들이 쌓여있다.

+0

다른 데이터베이스의 다른 테이블을 사용하고 싶습니다. – user1881957

관련 문제