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. 汇编语言转换成c语言,或者汇编语言转换成golang的汇编,c语言转换成golang的方法

    https://github.com/minio/c2goasm http://microapl.com/asm2c/index.html               收费的 https://gith ...

  2. setInterval的用法

    function show1(){    console.log("每隔1秒显示一次");}function show2(str){    console.log(str);}se ...

  3. c# WinFo判断当前程序是否已经启动或存在的几种方式

    第一种方式:利用Mutex互斥量实现同时只有一个进程实例在运行 static class Program { /// <summary> /// 应用程序的主入口点. /// </s ...

  4. 重装系统windows

    1 boot没有usb启动选项,驱动没加载好,先进入xp系统正确安装usb驱动,重启 2 file not fount bootmgr 用pe自带修复程序修复,修复驱动盘符为最小那个,非c盘 3 wi ...

  5. html的结构-厂子型的布局

    上图所示的布局设计是很常见的.这个该怎么做呢? 技术需求:header 要固定住在顶部,不随鼠标滚动而向上移动:左边的div的有一定的宽度,但是要贴浏览器的底部(屏幕顶部):右边的dv要占据右边的全屏 ...

  6. Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again

    # yum install -y vim Loaded plugins: fastestmirror, presto Loading mirror speeds from cached hostfil ...

  7. 了解的CAP和BASE等理论

    CAP,BASE和最终一致性是NoSQL数据库存在的三大基石.而五分钟法则是内存数据存储的理论依据.这个是一切的源头. 几个名词解释: 网络分区:俗称“脑裂”.当网络发生异常情况,导致分布式系统中部分 ...

  8. url传参中文乱码解决

    url传参request.setCharacterEncoding("utf-8");无法解决中文乱码问题 解决方法: 修改tomcat---conf----server.xml文 ...

  9. 手机端的1px边框如何实现

    (1).把边框设置为absolute,使用after,定义宽度为1px(mixin.styl) (2).通过@media,判断不同的dpi,来改变相应的Y轴宽度(base.styl),定义公共clas ...

  10. Yahoo的Yslow23条规则

    一. CONTENT 减少使用HTTP请求(Minimize HTTP Requests) 通常打开一个页面的时候,大部分的时间都是在下载该页面的图片,css样式,js脚本,flash等等资源,减少这 ...