django form 渲染

发布时间:2020-07-12 11:24:10 作者:quxf2012
来源:网络 阅读:1342

Django 的Form 类

Form包含各种字段(Field),每个Field也是一个类,每个Field包含一个widget的类,用来控制html元素的展示个属性等.


Form

所有的Form都作为django.forms.Form 的子类创建

form.is_bound 返回当前表单是否已绑定数据

hidden_fields() visible_fields() 分别返回所有隐藏的列和可见的列


Widget 类

每个Field都会根据字段类型对应一个默认的类,也可以手动指定widget的值来更改默认widget类,如下

name=forms.CharField(label='名称'max_length=200,widget=forms.TextInput(attrs={'class':'form-control'}))

widget.attrs 

 html属性的一个字典  #{'class': 'form-control', 'required': 'required'}



字段的数据

不管表单提交的是什么数据,一旦通过调用is_valid() 成功验证(is_valid() 返回True),验证后的表单数据将位于form.cleaned_data 字典中。这些数据已经为你转换好为Python 的类型。

此时,你依然可以从request.POST 中直接访问到未验证的数据,但是访问验证后的数据更好一些。


手动渲染字段

手动渲染时要加上non_field_errors这个错误信息.

{{ form.non_field_errors }}

<div class="fieldWrapper">
    {{ form.subject.errors }}
    <label for="{{ form.subject.id_for_label }}">Email subject:</label>
    {{ form.subject }}</div>

field 中有用的属性


`field`.`get_XXX_display`  #xx指字段名.

当定义的字段为关系字段,选择字段,bool等等,

django会自动生成一个get_xx_display的方法来生成这些字段的展示数据.

is_end_state = models.SmallIntegerField('是否', default=0,choices=[(0,'否'),(1,'是')])

is_end_state = models.SmallIntegerField('是否', default=0,choices=[(0,'否'),(1,'是')])

当字段类型为CharField时使用get_xx_display,获取到的值为本身,

直接打印出来为0或者1,使用get_xx_display打印出来则为定义字段时的则为是/否


{% if field.is_hidden %}
{% endif %}


推荐阅读:
  1. Django-ModleForm
  2. django如何为Form生成的label标签添加class

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

form django 渲染

上一篇:ExtJS中DragDrop插件的一些使用实例

下一篇:Thinkphp 框架模板变量及模板输出

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》