is_checkbox
特定のdjangoフォームのフィールドがチェックボックスであるかどうかを確認するために使用されるフォームフィールドメソッドについて知っています。フィールドがテキストエリアであるかどうかを確認する方法はありますか?
私はこれをやってみました:
{% if field.is_textarea %}
しかし、これはうまくいかないようです。
is_checkbox
特定のdjangoフォームのフィールドがチェックボックスであるかどうかを確認するために使用されるフォームフィールドメソッドについて知っています。フィールドがテキストエリアであるかどうかを確認する方法はありますか?
私はこれをやってみました:
{% if field.is_textarea %}
しかし、これはうまくいかないようです。
編集:説明-フィルターはフィールドオブジェクトを受け取り、文字列と比較して使用できるDjangoで使用されるウィジェットの名前を返します。
でテンプレートフィルターの定義を使用しますtemplatetags.py
:
from django import template
register = template.Library()
@register.filter('input_type')
def input_type(input):
return input.field.widget.__class__.__name__
そして、たとえば次のようにテンプレートで使用します。
{% if field|input_type == 'Textarea' %}
<div class="col-xl-9">{{ field }}</div>
{% else %}
<div class="col-xl-3">{{ field }}</div>
{% endif %}
次のようなことをする必要があります。
{% if field.widget...... %}
ウィジェットは、それ自体のフィールドではなく、レンダリングを担当します。
シェルで確認する例:
from django import forms
from django.forms import widgets
class ContactForm(forms.Form):
text = forms.CharField(max_length=100, widget=widgets.Textarea)
f = ContactForm()
f.fields['text'].widget
<django.forms.widgets.Textarea object at 0x218ccd0>
私は同じ意図を持っていました。唯一の解決策は、あなたの条件がifで動作することviews.py
です。
つまり、最初にhtmlコードでテキスト領域に名前を付けてから、views.py.
このように名前を取得するように移動します。テキスト領域の名前がviews.pyで「テキスト」であると想定して、このコードtext = request.GET ['text']
を記述し、次のようなifステートメントを作成します。
if text == '':
return render(request, 'html page you want render')
else:
return render(request, ' the exact page you want render if the textarea is filled ')