0

簡単な質問。私はフォーム ajax を呼び出します。

<body>
<div id="head"><a class="button">CLICK</a></head> - maybe head place
<div id="content"><a class="button">CLICK</a></head> - in content, other place

<form style="opacity:0;" metod="POST">
<input type="text" name="phone">
<input type="{% if id="content" %}text{% else %}hidden{% endif %}" name="phone">
</form>
</body>

私の問題: {% if id="content" %} - どのように実現するか

4

1 に答える 1

0

デフォルトでは、テンプレート内のフォームを識別することはできません。

あなたによると、dir(MyForm())これらのオプションしかありません:

'files': '{}',
'is_bound': 'False',
'error_class': '<class 'django.forms.util.ErrorList'>',
'empty_permitted': 'False',
'fields': '{}',
'initial': '{}',
'label_suffix': ':',
'prefix': 'None',
'_changed_data': 'None',
'data': '{}',
'_errors': 'None',
'auto_id': 'id_%s',

この行でフォームのクラス名を確認できますが、これは「プライベート」(アンダースコアでわかります) であり、(残念ながら) テンプレートのフォームからアクセスすることはできません:

MyForm.__class__.__name__

したがって、テンプレートでフォームを識別するためのオプションがいくつかあります。その猫の皮を剥ぐ方法はたくさんあります。私が最近使用した非常に安価なソリューションを 1 つだけ紹介します。

フォーム.py

class MyForm(forms.Form):
    my_form_name = "one" #add attr to form class
    ...

テンプレート

{{form.my_form_name}}

それほど賢くはありませんが、非常に堅牢です。


したがって、明らかに、ユースケースでは次のように言えます。

<a class="two"><input type="{% if form.my_form_name = "one" %}text{% else %}hidden{% endif %}"></a>
于 2012-11-14T11:38:29.840 に答える