一、问卷的保存按钮
前端通过ajax把多少发过来后端处理数据,然后回到给前端
二、对问卷做答
先是用户展开登录,验证
基准:一、唯有本班的上学的小孩子才能对问卷做答
      二、已经到位过的不能够再一次访问
      
在前者显示的体制
    突显当前问卷的难点
    – 你对多年来的学习有怎么样观点、。?
      1 2 3 4 5 。。 10
    – 路宁女情侣一些提出?
            文本…
    – 路宁选用帽子颜色?
            A. 绿色    B.翠绿
            C. 墨绿    D.深绿色

问卷的保留按钮涉及到的知识点:
集结的操作:
 

   s = [1,4,5,8]
    s2 = [2,4,7,8,6]
    print(set(s).difference(s2))  #做差集,在s中找和s2不同的元素  {1, 5}
    print(set(s2).difference(s))  #做差集,在s2中找和s不同的元素  {2, 6, 7}
    print(set(s)-set(s2))  #这种方式和上面的一样   {1, 5}
    print(set(s2)^set(s))  #交集   {1, 2, 5, 6, 7}
    print(set(s2)|set(s))   #并集  {1, 2, 4, 5, 6, 7, 8}

思路分析:
    获得前者的多少,像下边那种格式的
    假使是json格式发的,注意要在request.body中取值。
     ajax_post_list = [
                {
                    ‘id’: 2,
                    ‘caption’: “鲁宁爱不是益州??”,
                    ‘tp’: 1,

                },
                {
                    ‘id’: None,
                    ‘caption’: “八级哥肾好不好?”,
                    ‘tp’: 3
                },
                {
                    ‘id’: None,
                    ‘caption’: “鲁宁脸打不打?”,
                    ‘tp’: 2,
                    “options”: [
                        {‘id’: 1, ‘name’: ‘绿’, ‘score’: 10},
                        {‘id’: 2, ‘name’: ‘翠绿’, ‘score’: 8},
                    ]
                },
            ]
    前端的数据和数据库的数据进行相比较,
        – 前端有后端未有要加上
        – 前端未有后端有要去除
        – 前端有后端也有要立异
    
  
 #数据库中的那多少个难题id供给删除(数据Curry有前端没有的多少删除)采纳聚合操作,求差集
    del_id_list = set(question_id_list).difference(post_id_list) 
#del_id_list就是要去除的id
    循环前端发过来的数额,获得数码依次展开相比,
    #判定前端传进来的id不在数据库里面,就注明要新增
    #借使发过来的ty_id是二(单选)的时候,也要新增
    #要不就是要翻新
      
 #更新的时候注意也要看清一下ty_id,假若未有的话就的啊数据库的去除了,就算局地话
        #就先吧数据库的去除了,然后成立立异

问卷的问卷做答涉及到的知识点:
    一、创立类的二种格局
    方式一:
        class Foo(object):
            x1=5
            def func(self,arg):
                return arg
    方式二:
        Foo = type(‘Foo’,(object,),{“x1″:5,”func”:lambda x:x})
      
 有与Python中漫天皆对象,所以累也是3个指标,它是type的目的,所以那边就可以实例化
      
 那里的多个参数分别是,:类名,继承的类,字典里面能够放静态属性也得以放方法等。
        
    2、split切割
    s = “aaaa_ssss_ddd”
    print(s.split(“_”))   #[‘aaaa’, ‘ssss’, ‘ddd’]
    print(s.split(“_”,1))  #[‘aaaa’, ‘ssss_ddd’]  
#此间的参数一代表式按第一个下划线分割
    print(s.rsplit(“_”,1))  #[‘aaaa_ssss’, ‘ddd’] 
#rsplit表示从左边的首先个下划线分割
    
    三、Form前端循环
        views.py
        class LoginForm(Form):
            name = …
            pwd = …
        
        def login(request):
            form = LoginForm()
            return render(request,”login.html”)
            
        login.html
            不用循环达成的、
            <div>
                {{ form.name }} {{ form.errors.name.0 }}
                {{ form.aee }} {{ form.errors.age.0 }}
            </div>
            
            用循环完结的、
            <div>
                {% for item in form %}
                    {{ item.label }}{{ item }}{{ item.errors.0 }}
                    input框前的文字—-每种input框—-错误提醒
                {% endfor %}
            </div>
    肆、自定义Form验证规则
        def func(val):
                if len(val) < 15:
                    raise ValidationError(‘你太短了’)
                    
        
        class LoginForm(Form):
            name壹和name二是相同的,只是二种象征的方法
            name1 = fields.CharField(label=’xxx’,
widget=widgets.Textarea, validators=[RegexValidator(regex=””),]json,)
            name2 = fields.RegexField(label=’xxx’,
widget=widgets.Textarea, regex=”xxx”)
            
            假设上边的注解不满足你必要的时候,可以用那壹种。
            注意: validators=[func,
]此地的func函数不加(),Form会自动找到那一个函数去运作它
            name3 = fields.CharField(label=que.caption,
widget=widgets.Textarea, validators=[func, ])
            
            也能够协调去定义钩子函数去表明
            def clean_name1(self,val):
                return val
    
    
    
具体操作:
先是用户得先登录
#先判断哪些人能够答卷
查阅当前报到用户是还是不是是要评论的班级的学员
models.Student
假定不是就回去无权访问,

#是或不是曾经交付过当前问卷的答案

#展现当前问卷下的享有的标题
    
    
    
    
    
    
    
    

相关文章

网站地图xml地图