继承forms.ModelForm类实现django的表单系统

有时,我们在前端定义的<form>表单和后端定义的model结构基本上是一样的,那么我们可以直接在后端定义model后,定义一个modelform,实例化,传到前端后用{{ form }}标签直接生成html表单

参考:

http://blog.csdn.net/alex_chen_16/article/details/50830543

https://www.cnblogs.com/sss4/p/7112546.html

官方文档:

http://python.usyiyi.cn/translate/django_182/topics/forms/modelforms.html

1、首先定义好model类:

在models.py文件中:

class autotaggingtaskinfo(models.Model):
    taskid=models.IntegerField()#auto tagging task id
    username=models.CharField(max_length=200)# not null
    picnums=models.IntegerField()# the number of the pictures in the task
    priority=models.IntegerField()# the priority of the task (bigger first)
    status=models.IntegerField()# the status of the task (0-pause, 1-running, 2-error, 3-finished)
    labels=models.CharField(max_length=200)# the labels that will tag on pictures, separated by comma (e.g. "gender,age,position")
    remark=models.CharField(null=True,max_length=200)

2、然后继承ModelForm实现表单类:

在form.py文件中:

class AutotaggingFrom(forms.ModelForm):
    class Meta: # 内部类名必须为Meta
        model=autotaggingtaskinfo #model字段填要用来构造表单的model类的名字
        exclude=['username','status'] #exclude字段指定model类中不显示到前端表单中的字段名(也可以用 include字段指定model类中要显示到前端表单中的字段名,include=['taskid','picnums',priority','labels','remark'])

3、然后在view中创建ModelForm实例并传到前端

在views.py中:

@login_required
def taggingView(request):
    form = AutotaggingFrom(request.POST or None) # 创建ModelForm实例
    if (form.is_valid()):#如果是POST请求提交上来的有内容的表单,则将表单内容存入数据库
        form.save()
    return render(request, 'auto_tagging.html',locals()) # 将form对象传到前端显示表单

4、在前端html中用{{ form }}调用表单

auto_tagging.html中:

<form align="center">
    {{ form.as_p }}
    <input type="submit" value="tijiao">
</form>

form.as_p表示以p标签形式显示表单(还可以用form.as_table等)

django 表单系统 之 forms.ModelForm的更多相关文章

  1. django 表单系统 之 forms.Form

    继承forms.Form实现django表单系统 参考: https://www.cnblogs.com/zongfa/p/7709639.html https://www.cnblogs.com/c ...

  2. python3之Django表单(一)

    1.HTML中的表单 在HTML种,表单是在<form>...</form>种的元素,它允许用户输入文本,选择选项,操作对象等,然后发送这些数据到服务器 表单元素允许用户在表单 ...

  3. 9:django 表单

    django自带表单系统,这个表单系统不仅可以定义属性名,还可以自己定义验证,更有自己自带的错误提示系统 这节我们仅仅粗略的来看一下django表单系统的入门运用(具体的实在太多东西,主要是我觉得有很 ...

  4. 第四章:Django表单 - 5:模型表单ModelForm

    如果你正在构建一个数据库驱动的应用,那么你可能会有与Django的模型紧密映射的表单.比如,你有个BlogComment模型,并且你还想创建一个表单让大家提交评论到这个模型中.在这种情况下,写一个fo ...

  5. 关于创建Django表单Forms继承BaseForm的问题

    在创建Django表单时,因为需要验证用户输入的验证码是否正确,因此需要在session里提取当前验证码的值和POST提交过来的值进行比对,如图: form.py from django import ...

  6. Django表单介绍

    HTML 表单 在HTML中,表单是<form>...</form> 之间元素的集合,它们允许访问者输入文本.选择选项.操作对象和控制等等,然后将信息发送回服务器. 某些表单的 ...

  7. django 表单使用

    Django提供对表单处理的支持,可以简化并自动化大部分的表单处理工作. 1 定义表单类 表单系统的核心部分是Django 的Form类. Django 的数据库模型描述一个对象的逻辑结构.行为以及展 ...

  8. python 全栈开发,Day111(客户管理之 编辑权限(二),Django表单集合Formset,ORM之limit_choices_to,构造家族结构)

    昨日内容回顾 1. 权限系统的流程? 2. 权限的表有几个? 3. 技术点 中间件 session orm - 去重 - 去空 inclusion_tag filter 有序字典 settings配置 ...

  9. 第四章:Django表单 - 1:使用表单

    假设你想从表单接收用户名数据,一般情况下,你需要在HTML中手动编写一个如下的表单元素: <form action="/your-name/" method="po ...

随机推荐

  1. Atitit.ati dwr的原理and设计 attilax 总结 java php 版本

    Atitit.ati dwr的原理and设计 attilax 总结 java php 版本 1. dwr的优点相对于ajax来说..1 2. DWR工作原理1 3. Dwr的架构2 4. 自定义dwr ...

  2. Verilog语言:还真的是人格分裂的语言

    人气腹语术师天愿在现场披露了被人偶搭档夺取灵魂的腹语术师将妻子杀害的表演节目.天愿真的陷入了多重人格,命令自己杀害妻子和子的人偶的人格出现了.为了不(让自己)杀害和弟子登川有外遇的妻子,天愿提出委托想 ...

  3. mysql之mysql、mysql-devel、mysql-server

    一.引言 一直都没搞明白这三者之间的关系,于是决心查资料把这个问题搞明白,遂记录以便查阅.学习 二.关系 mysql-devel 开发用到的库以及包含文件mysql mysql 客户端mysql-se ...

  4. Spark Standalone与Spark on YARN的几种提交方式

    不多说,直接上干货! Spark Standalone的几种提交方式 别忘了先启动spark集群!!! spark-shell用于调试,spark-submit用于生产. 1.spark-shell ...

  5. 碉堡完整的高性能PHP应用服务器appserver

    完全企业级的开发模式,是一个多线程的 PHP 应用服务器,实现真正多线程的 PHP 编程,高效安全而且快速,以Magento 为例比基于 Nginx的标准安装要快 50%.概念上非常像 Java 的 ...

  6. logback参考配置

    logback配置 <?xml version="1.0" encoding="UTF-8"?> <configuration> < ...

  7. 给jdk配置jvm的参数

    (1)window->preference->java->installed JREs ->edit  -Xms512m -Xmx512m -XX:MaxNewSize=512 ...

  8. linux程序设计——主机字节序和网络字节序(第十五章)

    15.2.10    主机字节序和网络字节序 当在基于intel处理器的linux机器上执行新版本号的server和客户程序时,能够用netstat命令查看网络连接状况.它显示了客户/server连接 ...

  9. 网易研发project师(移动端游戏)—暑期实习生电面题目 2014年5月14日

    2014年5月14日 暑期实习生电话面试: 首先自我介绍. 一.C++ 1.extern的使用方法 2.虚函数 3.强制转换 4.malloc和new的差别 二.计算机网络 1.TCP和UDP有什么差 ...

  10. iOS开发中“此证书的签发者无效”的解决方式

    iOS开发过程中有时候会出现证书所有变成无效,例如以下图 然后进行打包的时候会提演示样例如以下警告:  解决方法:  第一步: 下载https://developer.apple.com/certif ...