【问题标题】:Django if identify form class divDjango if 识别表单类 div
【发布时间】:2012-11-14 10:18:00
【问题描述】:

简单的问题。 我叫表单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" %} - 如何实现

【问题讨论】:

  • 你的 Form 或 ModelForm 的实例叫什么?你冷就用Javascript来做这个

标签: jquery ajax class django-forms


【解决方案1】:

默认情况下无法识别模板中的表单。

根据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__

因此,您有几个选项可以在模板中标识您的表单。剥那只猫皮的方法很多。我只会介绍我最近使用的一种非常便宜的解决方案:

forms.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>

【讨论】:

    猜你喜欢
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2018-10-06
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2015-10-14
    相关资源
    最近更新 更多