zoukankan      html  css  js  c++  java
  • Django之ModelForm组件

    modelform介绍

    modelform与forms组件类似,forms组件与对应的表模型(没有关系)

    modelform相当于在其基础上继续封装,使得modelform与model具有对应的关系

    创建modelform

    from app01 import models
    # 导入modelform这个类
    from django.forms import ModelForm
    # 自己创建一个类继承这个类
    class BookList(ModelForm):
        # 创建Meta类,在Meta类中可以定义属性
        class Meta:
            # 对应的表模型
            model = models.Book
            # fields 用于控制展示的字段 __all__代表全部, 如果想展示多个,就放在列表中
            fields = '__all__'
            # fields = ['title', 'price']
            # exclude用于控制排除的字段
            exclude = ['title']
            # error_message用于展示报错信息时不同字段对应不同的信息
            error_messages = {
                'title': {
                    'required': '标题不能为空',
                    'invalid': '格式错误'
                },
                # 'price'.... 每个字段需要添加错误信息都可以在这个地方添加
            }
            # 当我们想要给对应的输入框加入属性时,widgets可以帮我们实现
            # 首先要从forms中导入widgets,这里因为和下面的关键字名字一样, 所以需要起别名
            from django.forms import widgets as wid
            widgets = {
                'title': wid.TextInput(attrs={'class':'form-control'}),
                'price': wid.TextInput(attrs={'class':'form-control'})
            }
            # labels 自定义在前端显示的名字,如果我们不指定,就会自动取字段中查找设置的verbose_name的值
            # 如果我们没有设置verbose_name,就会使用字段名对应的小写
            labels = {
                'title': '标题',
                'price': '价格'
            }

     在url对应的视图函数中实例化这个类传到前端

    def index(request):
        book_obj = BookList()
        return render(request, 'xxx.html', locals())

    在前端中用法基本与forms组件一致

    <label for="{{ foo.auto_id }}">    获得输入框对应的id值
    {{ foo.label }}                     获得输入框对应的文本名
    </label>                            对应的输入框
    {{ foo }}
    <span>
    {{ foo.errors.0 }}                  输入框的报错信息
  • 相关阅读:
    2017.8.07
    2017.8.05
    2017.8.04
    2017.8.03
    2017.8.02
    2017.8.01
    2017.7.31
    2017.7.29
    2017.7.28
    简易日历
  • 原文地址:https://www.cnblogs.com/hesujian/p/11294670.html
Copyright © 2011-2022 走看看