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 }}                  输入框的报错信息
  • 相关阅读:
    ASP.NET 跨域请求之jQuery的ajax jsonp的使用解惑 (转载)
    调用WebService报错404问题 (转载)
    使你的ActiveX控件执行时不弹出安全性提示(转载)
    FFmpeg for Android compiled with x264, libass, fontconfig, freetype and fribidi
    ffmpeg: ‘UINT64_C’ was not declared in this scope (转)
    vs中ffmpeg release版本崩溃问题(转)
    #pragma execution_character_set("utf-8")
    上半年
    C获取当前时间
    linux 信号量之SIGNAL 0<转>
  • 原文地址:https://www.cnblogs.com/hesujian/p/11294670.html
Copyright © 2011-2022 走看看