当前位置:Gxlcms >
数据库问题 >
[oldboy-django][2深入django]后台生成form标签并设置标签的属性
[oldboy-django][2深入django]后台生成form标签并设置标签的属性
时间:2021-07-01 10:21:17
帮助过:26人阅读
Form生成html标签
a. 通过Form生成Input输入框,Form标签,以及submit标签还是要在前端写的,
但是Form标签内的Input标签可以在后台实现;只需要按以下步骤
-
views定义StudentForm(Form)类
-
views视图函数将Form实例化对象传递给前端
-
前端{{ obj.段 }}即可
b. 通过Form设置前端Input的type属性,即设置不同类型的输入框
# 设置name为text, cls_id为下拉框
class StudentForm(Form):
name = fields.CharField(widget=
widgets.InputText())
cls_id = fields.IntegerField(widget =
widgets.Select())
c. 设置下拉框的内容choices属性
class StudentForm(Form):
cls_id =
fields.IntegerField(
widget=widgets.Select(choices=models.Classes.objects.values_list(
‘id‘,
‘title‘))
)
注意: choices的值必须[元组,(), ()]类型
widget=widgets.Select(choices=[(1,
‘上海‘), (2,
‘北京‘)])
d.设置input输入框的class属性 --
attrs
name = fields.CharField(max_length=8, min_length=2
,
widget=widgets.TextInput(attrs={
‘class‘:
‘form-control‘})
)
cls_id =
fields.IntegerField(
widget=
widgets.Select(
choices=models.Classes.objects.values_list(
‘id‘,
‘title‘),
attrs={
‘class‘:
‘form-control‘}
)
)
注意: attrs参数必须放在TextInput或者Select等内部,而且值必须为字典
e. 通过Form设置前端Input的默认显示值
只要在视图函数将实例化一个Form对象,并且设置initial值即可
student_dict = models.Student.objects.filter(id=nid).values(
‘name‘,
‘age‘,
‘email‘,
‘cls_id‘).first()
obj = StudentForm(initial=student_dict)
[oldboy-django][2深入django]后台生成form标签并设置标签的属性
标签:mod oldboy class max att exti .class val sel