4

ログイン/サインアップページを生成するために django.forms を使用しています。コードの一部は次のとおりです。

<form method="post" action="{% url 'login' %}">
{% csrf_token %}
<table>
<tr>
    {# username is directed to email field in our model #}
    <td>{{ form.username.label_tag }}</td>
    <td>{{ form.username }}</td>
</tr>
<tr>
    <td>{{ form.password.label_tag }}</td>
    <td>{{ form.password }}</td>
</tr>
</table>
<input type="submit" value="login" />
{% if next %}
    <input type="hidden" name="next" value="{{ next }}" />
{% else %}
    <input type="hidden" name="next" value="{% url 'home' %}" />
{% endif %}
</form>

ご覧のとおり、 and はそれぞれ{{ form.username }}{{ form.password }}を自動的に生成します。しかし、これらのフィールドに や などの追加の属性を追加したいと考えています。これらはどこでカスタマイズできますか?<input id="id_username" maxlength="254" name="username" type="text"><input id="id_password" name="password" type="password">inputplaceholderclass

4

2 に答える 2

9

手動で:

<input type="text" name="{{ form.field.html_name }}" placeholder="foo" value="{{ form.field.value }}" />

または、ウィジェットの attrs 引数を介して https://docs.djangoproject.com/en/dev/ref/forms/widgets/#django.forms.Widget.attrs

class MyForm(forms.Form):
    field = forms.CharField(widget=forms.TextInput(attrs={'placehoder': 'foo', 'title': 'baz'}))
于 2013-05-29T20:29:47.787 に答える
6

これはdjango-widget-tweaks、django のウィジェットを微調整するための非常に優れたライブラリです。私はそれを使用しましたが、それは非常に簡単です。

彼らのサイトから:

{% load widget_tweaks %}
<!-- change input type (e.g. to HTML5) -->

{% render_field form.search_query type="search" %}

<!-- add/change several attributes -->
{% render_field form.text rows="20" cols="20" title="Hello, world!" %}

<!-- append to an attribute -->
{% render_field form.title class+="css_class_1 css_class_2" %}

<!-- template variables can be used as attribute values -->
{% render_field form.text placeholder=form.text.label %}

お役に立てれば!

于 2013-05-29T20:29:08.443 に答える