2

次のようなUsernameという単純なモデルを作成しようとしています。

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

これは私が作成しようとしているDjangoモデルです。問題は、ユーザー名とパスワード属性がCharFieldとして保存されているのに対し、パスワードを* *または暗号化された形式でデータベースに保存したいのですが、DjangoのCharFieldのようなPasswordFieldがないようです。それを行うための最良の方法は何ですか?

4

2 に答える 2

2

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()

もちろん、これを実装するときは大きな注意を払う必要があります。上記は簡単な例です。詳細についてはドキュメントを確認してください。

于 2013-01-07T10:07:49.883 に答える
0

Django には User モデルが付属しています。django.contrib.auth.models の下にあります。モデルには必要なものがすべて含まれており、既にモデルがある場合に独自のモデルを作成するのはばかげています。また、django.contrib.auth.forms にユーザー作成フォームと認証フォームがあり、ユーザー モデルの set_password メソッドのようなもので、さらに多くのものをヒープします。

于 2013-01-08T10:02:15.693 に答える