django_form.py 文件源码

python
阅读 18 收藏 0 点赞 0 评论 0

项目:kliko 作者: gijzelaerr 项目源码 文件源码
def generate_form(parsed):
    """
    Generate a django form from a parsed kliko object

    args:
        params: A parsed kliko file.
    returns:
        form_utils.forms.BetterForm
    """
    all_fields = {}
    fieldsets = []
    for section in parsed['sections']:
        fields_in_section = []

        for field in section['fields']:
            kwargs = {}
            for kwarg in ('initial', 'max_length', 'label', 'help_text', 'file', 'required'):
                if kwarg in field:
                    kwargs[kwarg] = field[kwarg]
            if 'choices' in field:
                kwargs['choices'] = field['choices'].items()
            fields_in_section.append(field['name'])

            match = list_regex.match(field['type'])
            if match:
                type_ = match.group(1)
                djangofield = field_map[match.group(1)]
                all_fields[field['name']] = ArrayField(djangofield, **kwargs)
            else:
                djangofield = field_map[field['type']]
                all_fields[field['name']] = djangofield(**kwargs)

        fieldsets.append((section['name'],
                          {'fields': fields_in_section,
                           'description': section['description']}
                          ))

    Meta = type('Meta', (), {'fieldsets': fieldsets})
    all_fields['Meta'] = Meta

    return type('Form', (BetterForm,), all_fields)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号