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. ARMV8 datasheet学习笔记3:AArch64应用级体系结构之Atomicity

    1.前言 Atomicity是内存访问的一个属性,描述为原子性访问,包括single-copy atomicity和multi-copy atomicity 2.基本概念 observer 可以发起对 ...

  2. python将图片转换为Framebuffer裸数据格式(终端显示图片)【转】

    转自:https://www.cnblogs.com/zqb-all/p/6107905.html 要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口, ...

  3. linux 下程序员专用搜索源码用来替代grep的软件ack(后来发现一个更快的: ag), 且有vim插件的

    发现一个比ack更快更好用的:  https://github.com/ggreer/the_silver_searcher   , 使用时命令为ag,它是基于ack的代码二次开发的,所有使用方法基本 ...

  4. WPF 未能加载文件或程序集“CefSharp.Core.dll”或它的某一个依赖项

    1.检查代码不存在问题,最后找到问题,Nut管理包没有安装CefSharp.wpf. 2.安装对应的版本即可.

  5. 读SRE Google运维解密有感(四)-聊聊问题排查

    前言 这是读“SRE Google运维解密”有感第四篇,之前的文章可访问www.addops.cn来查看.今天我们来聊聊“问题排查”这个话题,本人到目前为止还在参与一线运维的工作,遇到过很多“稀奇古怪 ...

  6. 安装ClamAV对centos系统进行病毒查杀

    安装ClamAV 1.安装epel源 yum install epel-release 在安装了EPEL源后,运行下面的命令安装ClamAV # yum install clamav-server c ...

  7. 基于url拦截

  8. 部署vCenter Server Appliance 6.7

    =============================================== 2019/4/14_第1次修改                       ccb_warlock == ...

  9. vue系列之获取多选框中被选中的值

    多个勾选框,绑定到同一个数组: <input type="checkbox" id="jack" value="Jack" v-mod ...

  10. eol-last的相关知识

    eslint  “eol-last”:0 文件末尾强制换行(就是代码结尾处,要来个空格,相当于加一行,设置为0就可以了) ./src/main.js error  eol-last  Newline ...