reg*_*gmi 13 django django-forms
我正在使用django表单,我想在我的HTML中使用Twitter Bootstrap的css.所以我的模板看起来像这样:
{% for field in form %}
<div class="form-group">
{{ field.label_tag }}<!--Same thing as : <label for="{{field.id_for_label}}"></label> -->
<input type="{{field.type}}" class="form-control" id="{{field.auto_id}}" placeholder="Email">
</div>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚是否获得了类型值.{{field.type}}.
有没有办法在django模板中获取输入字段的类型?
提前致谢
更新:
我问这个问题的原因是因为我希望能够将bootstrap类应用于input元素.但是在Bootstrap3中,要使用默认的css作为输入类型,你必须将form-control类添加到input元素,如下所示:<input type="text" class="form-control" id="{{field.auto_id}}" placeholder="">.
如果我使用django的字段,{{field}}那么我无法添加表单控件类.我希望这能澄清一些事情.
我也看到了这个应用程序https://github.com/dyve/django-bootstrap3看起来像我想做的事情.令我惊讶的是,django不允许访问表单类型以允许更大的灵活性.
Cha*_*ist 17
您可以使用:
{{ [FIELD].field.widget.input_type }}
Run Code Online (Sandbox Code Playgroud)
[FIELD] 是你的字段名称.
Rah*_*pta 10
我认为你不必担心field_type.Django将根据表单字段为您自己处理.
让我们说有一个ContactForm像:
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField(widget=forms.Textarea)
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
Run Code Online (Sandbox Code Playgroud)
然后{{form.subject}}会自动<input>在模板中创建元素.
<input id="id_subject" type="text" name="subject" maxlength="100" />
Run Code Online (Sandbox Code Playgroud)
同样,{{form.message}}在模板中将创建:
<input type="text" name="message" id="id_message" />
Run Code Online (Sandbox Code Playgroud)
虽然如果您确实需要在模板中获取表单字段类型,您可以创建如下所示的自定义模板过滤器.
from django import template
register = template.Library()
@register.filter(name='field_type')
def field_type(field):
return field.field.widget.__class__.__name__
Run Code Online (Sandbox Code Playgroud)
现在,在您的模板中,您需要执行以下操作:
{{form.field_name|field_type}}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,{{form.message|field_type}}将返回TextInput.
小智 3
如果您想访问字段类型,请参阅此答案。
如果要覆盖字段的默认类型,请attrs在为字段定义小部件时使用参数。
例如。
field_name = forms.CharField(widget=forms.Textarea(attrs={'type': 'custom type'}))
Run Code Online (Sandbox Code Playgroud)
另请注意,您可以传递任何键值对attrs,它们将在呈现表单时用作 html 标记中的属性。
| 归档时间: |
|
| 查看次数: |
13165 次 |
| 最近记录: |