type时所有元类的父亲
object是type(object的类型是type),type也是object(type继承自object)
>>> isinstance(object, type)
True
>>> isinstance(type, object)
True
在python中一切皆object,所有对象都是从object继承而来的,type也是object,而object的type是type
>>> type.__base__
<type 'object'>
>>> type(object)
<type 'type'> 、type是一切type的类型
、object是所有对象的基类,type也继承自object
、object的type是type 去掉object所有对象都不能用了,而去掉type,所有对象还是可以正常运作的,只是没有一个东西标识他的类型了
def score(request, class_id, qn_id):
"""
:param request:
:param class_id: 班级ID
:param qn_id: 问卷ID
:return:
"""
student_id = request.session['student_info']['id']
# . 当前登录用户是否是要评论的班级的学生
ct1 = models.Student.objects.filter(id=student_id, cls_id=class_id).count()
if not ct1:
return HttpResponse('你只能评论自己班级的问卷,是不是想转班?') # . 你是否已经提交过当前问卷答案
ct2 = models.Answer.objects.filter(stu_id=student_id, question__naire_id=qn_id).count()
if ct2:
return HttpResponse('你已经参与过调查,无法再次进行') # . 展示当前问卷下的所有问题
# question_list = models.Question.objects.filter(naire_id=qn_id) from django.forms import Form
from django.forms import fields
from django.forms import widgets # # 类:方式一
# class TestForm(Form):
# tp1 = fields.ChoiceField(label='路宁傻不傻?',choices=[ (i,i) for i in range(,)],widget=widgets.RadioSelect)
# tp2 = fields.ChoiceField(label='路宁傻不傻?',choices=[ (i,i) for i in range(,)],widget=widgets.RadioSelect)
# tp3 = fields.CharField(label='对路宁的建议?',widget=widgets.Textarea)
# tp4 = fields.ChoiceField(label='路宁帽子颜色?',choices=[ (i,i) for i in range(,)],widget=widgets.RadioSelect)
#
# # 类:方式二
# MyTestForm = type("MyTestForm",(Form,),{
# 'tp1': fields.ChoiceField(label='路宁傻不傻?',choices=[ (i,i) for i in range(,)],widget=widgets.RadioSelect),
# 'tp2': fields.ChoiceField(label='路宁傻不傻?',choices=[ (i,i) for i in range(,)],widget=widgets.RadioSelect),
# 'tp3': fields.CharField(label='对路宁的建议?',widget=widgets.Textarea),
# 'tp4': fields.ChoiceField(label='路宁帽子颜色?',choices=[ (i,i) for i in range(,)],widget=widgets.RadioSelect),
# })
# return render(request,'score.html',{'question_list':question_list,'form':MyTestForm()})
question_list = models.Question.objects.filter(naire_id=qn_id)
field_dict = {}
for que in question_list:
if que.tp == :
field_dict['val_%s' % que.id] = fields.ChoiceField(
label=que.caption,
error_messages={'required':'必填'},
widget=widgets.RadioSelect,
choices=[(i, i) for i in range(, )]
)
elif que.tp == :
field_dict['option_id_%s' % que.id] = fields.ChoiceField(
label=que.caption,
widget=widgets.RadioSelect,
choices=models.Option.objects.filter(
qs_id=que.id).values_list('id', 'name'))
else:
from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
# field_dict['x_%s' % que.id] = fields.CharField(
# label=que.caption, widget=widgets.Textarea,validators=[RegexValidator(regex=""),])
field_dict['content_%s' % que.id] = fields.CharField(
label=que.caption, widget=widgets.Textarea, validators=[func, ])
# 类:方式二
MyTestForm = type("MyTestForm", (Form,), field_dict) if request.method == 'GET':
form = MyTestForm()
return render(request, 'score.html', {'question_list': question_list, 'form': form})
else:
# 15字验证
# 不允许为空
form = MyTestForm(request.POST)
if form.is_valid():
print(form.cleaned_data)
# {'x_2': '', 'x_9': 'sdfasdfasdfasdfasdfasdfasdf', 'x_10': ''}
objs = []
for key,v in form.cleaned_data.items():
k,qid = key.rsplit('_',)
answer_dict = {'stu_id':student_id,'question_id':qid,k:v}
objs.append(models.Answer(**answer_dict))
models.Answer.objects.bulk_create(objs)
return HttpResponse('感谢您的参与!!!') return render(request, 'score.html', {'question_list': question_list, 'form': form})

用type动态创建Form的更多相关文章

  1. js动态创建Form表单并提交

    javascript动态创建Form表单和表单项,然后提交表单请求,最后删除表单,代码片段如下(Firefox测试通过): var dlform = document.createElement('f ...

  2. 使用python type动态创建类

    使用python type动态创建类 X = type('X', (object,), dict(a=1))  # 产生一个新的类型 X 和下列方法class X(object):    a = 1效 ...

  3. type动态创建类

    在一些特定场合,需要动态创建类,比如创建表单,就会用到type动态创建类,举个例子: class Person(object): def __init__(self,name,age): self.n ...

  4. jQuery动态创建form表单并提交到后台(携带一定的数据进行页面跳转)

    今天遇到这么一个需求,携带一个编号一个名字跳转到另一个JSP页面,直接页面跳转(get携带数据)的话不太安全,于是想到到后台转发一下. 第一种:直接以表单提交方式的进行 JS代码: var form ...

  5. [Python]利用type()动态创建类

    Python作为动态语言,可以动态地创建函数和类定义.比如说定义一个Hello类,就写一个hello.py模块: #! /usr/bin/env python #coding=utf-8 class ...

  6. jquery动态创建form并提交到.ashx文件处理

        有时候在写web 应用的时候,需要临时动态构造一个form 并提交,form 里面的参数以及action,以及是post请求还是get请求,甚至form 的样式都是可以指定的,用原生的java ...

  7. jquery动态创建form表单

    function exportExcel() { var merchantName = $('#merchantName').val(); var merchantNo = $('#merchantN ...

  8. 动态创建form 完成form 提交

    document.body.appendChild(jForm) won't work because jForm is not a dom element, it is a jQuery objec ...

  9. 使用jquery 动态创建form 并提交

    $(document).ready(function(){    $("a.delete").click(function(event){        action = this ...

随机推荐

  1. MySQL日志——Undo | Redo【转】

    本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版 ...

  2. PhantomJSのメモいろいろ

    提供されるモジュール群は5つ phantom: そのもの FileSystem: ファイルに出力したり.依存ファイルの存在確認したり System: コマンドラインから引数取りたいなら WebPage ...

  3. c# 界面自适应大小

    采用在窗体事件SizeChanged里面代码控制大小和位置,达到自动适应窗体大小,这样做调整起来方便. private void FrmMain_SizeChanged(object sender, ...

  4. saltstack自动化运维系列11基于etcd的saltstack的自动化扩容

    saltstack自动化运维系列11基于etcd的saltstack的自动化扩容 自动化运维-基于etcd加saltstack的自动化扩容# tar -xf etcd-v2.2.1-linux-amd ...

  5. 作业8_exer1128.txt

    1.规范化理论是关系数据库进行逻辑设计的理论依据,根据这个理论,关系数据库中的关系必须满足:每 一个属性都是(B). A.长度不变的 B.不可分解的 C.互相关联的 D.互不相关的 2.已知关系模式R ...

  6. vue系列之webstrom的设置

    1.安装vue插件,方法 Setting->Plugins,点击Plugins,在右边输入vue,找到相应插件,然后安装 2.创建vue模板 注意红圈里面的 3.设置vue文件支持的样式 注意: ...

  7. PyCharm Professional破解版和汉化下载地址-new

    2018.1版本下载地址 2018.2.1版本下载地址 今天找了很久很多都不能用了,注意破解过程提到的小细节,如果破解完了点击没反应请检查"pycharm.exe.vmoptions&quo ...

  8. SpringMVC后台token防重复提交解决方案

    本文介绍如何使用token来防止前端重复提交的问题. 目录 1.思路 2.拦截器源码实现 3.注解源码 4.拦截器的配置 5.使用指南 6.结语 思路 1.添加拦截器,拦截需要防重复提交的请求 2.通 ...

  9. easyx的基础应用教程

    引用 什么是 EasyX? 作者:EasyX EasyX 是针对 C++ 的图形库,可以帮助 C 语言初学者快速上手图形和游戏编程. 比如,可以用 VC + EasyX 很快的用几何图形画一个房子,或 ...

  10. 如何将自己的Image镜像Push到Docker Hub

    首先需要一个docker官方账号 这里我添加了一个AspNetCore程序 通过创建了一个镜像(前面提过使用Dockerfile处理了) docker build -t dockertest . 首先 ...