10

<input type="password">結果のhtml要素に何かを表示するようにDjangoフォームのパスワードフィールドに事前入力する方法はありますか?

が設定されている場合、デフォルトの動作では何も表示されないようですMyForm(initial = {'passfield':'something'})

ユーザー編集フォームを実装するためにこれが必要です。ランダムな文字列を表示したいのですが、ユーザーが変更しないと、パスワードを変更したくないことがわかります。ですから、私がやろうとしていることにセキュリティ上の問題はないと思います。

4

3 に答える 3

27

render_value引数の使用は、Djangoのドキュメントに記載されているケースだけでなく、次のように使用できるようです。

class MyForm(forms.Form):
    password_field = forms.CharField(widget = forms.PasswordInput(render_value = True))
于 2012-10-22T18:58:59.817 に答える
0

ドキュメントによると、DjangoPasswordFieldは初期値をサポートしていません。そのため、合格してもレンダリングされません。

フィールドをサブクラス化して独自のパスワードウィジェットを作成するか、HTML5を使用することができますplaceholder。HTML5は、パスワード自体ではなく、ユーザーに何かを表示できるため、はるかに安全です。

HTML5をサポートするには、https://github.com/adamcupial/django-html5-formsを使用できます。次に、次のようなことを行うことができます(正確な構文ではなく、次のようなことを行います)。

class FooForm(forms.Form):
    ...
    password = forms.PasswordField(..., placeholder="Your password here")
于 2012-10-22T18:47:19.960 に答える
-1

私は同様の状況に遭遇し、次のことを行いました。

class UserForm(forms.ModelForm):
    password1 = PasswordField(label="Password")

あるフィールドにPasswordFieldは、上記のようにデフォルトでPasswordInput設定する必要があります。その後、初期化中にパスワードの初期値を渡しました。render_value = TrueFalseUserForm

UserForm(instance=user, initial={'password1': settings.dummy_password})

この初期値は設定ファイルで事前定義されており、パスワードが変更された場合は比較し、パスワードを更新する場合は元の値をそのままにします。

于 2014-04-29T18:46:15.483 に答える