7

プロジェクトにdjango-registrationを使用しています。私のregistration_form.htmlファイルで:

{{form.username}}
{{form.email}}
//other fields

そして、各フィールドにプレースホルダーを設定したいと思います。しかし、これは一種の組み込みアプリです。そのため、メイン アプリからこれらのフィールドを編集する方法を見つける必要があります。

django-registration のソースを変更したくありません。

4

3 に答える 3

25

組み込みフォームをオーバーライドできる場合は、次のようにプレースホルダーを定義できます。

class RegistrationForm(forms.ModelForm):
    class Meta:
        model = YourModelName
        widgets = {
            'username' : forms.TextInput(attrs = {'placeholder': 'Username'}),
            'email'    : forms.TextInput(attrs = {'placeholder': 'E-Mail'}),
        }

または、jQueryを使用して、id以下に示すように対応するフィールドを使用して、フィールドにプレースホルダーを追加できます。

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript" >
    $(document).ready(function(){
        $("#id_username").attr('placeholder', '{{form.username.label}}');
        $("#id_email").attr('placeholder', '{{form.email.label}}');
    });
</script>

あなたはフィールドのを見つけるためにfirebugidを使うことができます。

于 2012-11-23T06:49:04.367 に答える
12

フィールドを変更するテンプレート タグ フィルタを実際に作成します。

@register.filter
def html_placeholder(field, args=None):
    if args == None:
        return field
    field.field.widget.attrs.update({ "placeholder": args })
    return field
于 2013-09-06T00:47:21.133 に答える