Django表单在forms.py中添加锚点标签
在Django的表单中,怎么在表单类里添加一个锚点标签,而不去修改form.html文件呢?
forms.py
class HealthCheckerForm(PortalModelForm):
name = forms.CharField(max_length=128,required = False ,help_text="Enter Name", label='Name')
description = forms.CharField(max_length=128, required = False, label='desc*')
age = forms.CharField(max_length=128,required = False ,help_text="Enter age", label='age')
group = forms.CharField(max_length=128, required = False, label='group*')
form.html
{% for field in form %}
<div class="fieldWrapper">
<div class="fieldInfo">
{{ field.label_tag }}{{ field }}
<span class="errorList">{{ field.errors|striptags}}</span>
</div>
</div>
{% endfor %}
不修改form.html的情况下,怎么添加一个按钮或者锚点标签呢?
提前谢谢大家!
1 个回答
2
我希望我理解了你的问题;这听起来和我今天遇到的问题很像。
基本上,你可以自己创建一个小部件(Widget)和一个字段(Field)。
from django.utils.safestring import mark_safe
class AnchorOnlyWidget(forms.Widget):
def render(self, name, value, attrs):
final_attrs = self.build_attrs(attrs, name=name)
if hasattr(self, 'initial'):
value = self.initial
return mark_safe("<a href='%s' %s>%s</a>" %
(value, flatatt(final_attrs), value))
def _has_changed(self, initial, data):
return False
class AnchorOnlyField(forms.FileField):
widget = AnchorOnlyWidget
def __init__(self, widget=None, label=None, initial=None, help_text=None):
forms.Field.__init__(self, label=label, initial=initial,
help_text=help_text, widget=widget)
def clean(self, value, initial):
self.widget.initial = initial
return initial
然后把它添加到你的表单里:
class HealthCheckerForm(PortalModelForm):
youranchor = AnchorOnlyField(help_text="the help")
...