码迷,mamicode.com
首页 > 数据库 > 详细

[oldboy-django][2深入django]后台生成form标签并设置标签的属性

时间:2017-11-21 17:04:44      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:mod   oldboy   class   max   att   exti   .class   val   sel   

# 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   

原文地址:http://www.cnblogs.com/liuzhipenglove/p/7873647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!