Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Django实战-调查问卷表设计

Django实战-调查问卷表设计

作者头像
小团子
发布于 2019-10-09 07:40:07
发布于 2019-10-09 07:40:07
2.8K00
代码可运行
举报
文章被收录于专栏:数据云团数据云团
运行总次数:0
代码可运行

Django实战-csrf_token 跨站请求

Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。

设计如下类型的调查问卷表:问卷类型包括(打分,建议,选项),先来看看一个简单的问答。

  • 您最擅长的是什么编程语言?
  • A.Java  B.C++ C. Python D.PHP

对于上面一个类型的问答,可以知道,一个问卷系统主要包括:问卷,问卷中每个题目,每个题目的答案,以及生成问卷记录。常规设计表如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Survery(models.Model):
    """
    问卷
    ID        name            by_class      creator
    1    第一次班级调查      大一计算机205班     张老师
    """
    name = models.CharField(verbose_name="调查问卷名称", max_length=128, unique=True)
    by_class = models.ForeignKey("ClassList", verbose_name="问卷调查班级", on_delete=models.SET_NULL)
    date = models.DateTimeField(verbose_name="问卷创建日期", auto_now_add=True)
    creator = models.ForeignKey("UserInfo", verbose_name="创建者", on_delete=models.SET_NULL)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SurveryItem(models.Model):
    """
    问卷题目
    ID                 survery                       name                   date          answer_type
     1    1(代表上面创建的第一次班级调查)      您最喜欢吃什么水果?         xxx-xxx-xx             1
     1    1(代表上面创建的第一次班级调查)      您最喜欢看什么书籍?         xxx-xxx-xx             2
     1    1(代表上面创建的第一次班级调查)      您最喜欢什么英雄人物?       xxx-xxx-xx             3
    """
    survery = models.ForeignKey('Survery', verbose_name='问卷', on_delete=models.SET_NULL)
    name = models.CharField(verbose_name="调查问题", max_length=255)
    date = models.DateField(auto_now_add=True)
    answer_type_choices = (
        (1, "打分(1~10分)"),
        (2, "单选"),
        (3, "建议"),
    )
    answer_type = models.IntegerField(verbose_name="问题类型", choices=answer_type_choices, default=1)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SurveryChoices(models.Model):
    """
    问卷选项答案(针对选项类型)
    ID    item    content   points
    1       2       A         101       2       B         91       2       C         81       2       D         7"""
    item = models.ForeignKey('SurveryItem', verbose_name='问题', on_delete=models.SET_NULL)
    content = models.CharField(verbose_name='内容', max_length=256)
    points = models.IntegerField(verbose_name='分值')
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class SurveryRecord(models.Model):
    """
    问卷记录
    ID    survery      student_name   survery_item  score  single  suggestion  date
    1        1            1               1          10null      null    xxxxx     
    1        1            1               2          null     A       null    xxxxx     
    1        1            1               3          null   null      XXXXX    xxxxx     
    """
    survery = models.ForeignKey('Survery', verbose_name="问卷", on_delete=models.SET_NULL)
    student_name = models.ForeignKey('Student', verbose_name="学生姓名", on_delete=models.SET_NULL)
    survery_item = models.ForeignKey('SurveryItem', verbose_name="调查项", on_delete=models.SET_NULL)

    score = models.IntegerField(verbose_name="评分", blank=True, null=True)
    single = models.ForeignKey('SurveryChoices', verbose_name='单选', blank=True, null=True, on_delete=models.SET_NULL)
    suggestion = models.TextField(verbose_name="建议", max_length=1024, blank=True, null=True)

    date = models.DateTimeField(verbose_name="答题日期", auto_now_add=True)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文看懂Python沙箱逃逸
让用户提交 Python 代码并在服务器上执行,是一些 OJ、量化网站重要的服务,很多 CTF 也有类似的题。为了不让恶意用户执行任意的 Python 代码,就需要确保 Python 运行在沙箱中。沙箱经常会禁用一些敏感的函数,例如 os,研究怎么逃逸、防护这类沙箱还是蛮有意思的。
FB客服
2019/05/23
3.1K0
从沙盒逃逸看Python黑科技(下篇)
本周发的有点晚了,本来周三发的,有点生病,就拖到现在了,希望大家见谅。接着上一篇的内容,讲解一下Python中的黑科技。如果大家想回顾上文,可以点下面的链接:
七夜安全博客
2020/07/08
1.4K0
Python中eval带来的潜在风险,你知道吗?
00 前言 eval是Python用于执行python表达式的一个内置函数,使用eval,可以很方便的将字符串动态执行。比如下列代码: >>> eval("1+2") 3 >>> eval("[x for x in range(10)]") [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 当内存中的内置模块含有os的话,eval同样可以做到命令执行: >>> import os >>> eval("os.system('whoami')") win-20140812chj\administra
CDA数据分析师
2018/02/05
3K0
CTF - Python 沙箱绕过与任意命令执行技巧
首先,您需要知道是否可以直接使用已导入的某些库执行代码,或者是否可以导入以下这些库:
井九
2024/10/12
9610
(精编)Python与安全(三)SSTI服务器模板注入
__mro__返回一个包含类或对象所继承的基类元组。方法在解析式按照元组的顺序解析,从自身所属类到<class'object'>。
Power7089
2020/07/27
8730
(精编)Python与安全(三)SSTI服务器模板注入
SSTI模板注入 | No_Bypass
模板可以理解为是一段固定好格式,并等着你来填充信息的文件,模板注入就是指将一串指令代替变量传入模板中让它执行
h0cksr
2023/05/17
5510
从沙盒逃逸看Python黑科技(上篇)
本篇的主题源于下面的一道CTF题目:python沙箱逃逸,这是一个阉割的Python环境,主要进行了两部分限制:
七夜安全博客
2020/06/29
2K0
看完此文,你还会用 eval 吗?
Python 有一个内置的 eval() 函数,可以直接执行 Python 代码,比如:
somenzz
2020/11/25
7040
SSTI漏洞基础分析
妥妥造成了信息泄露,但是还可以将危害扩大化,直接造成任意文件读取和RCE,在可以保证能看懂的情况下,我们得先学习python的魔术方法和继承关系,接下来细说~
vFREE
2022/04/01
6060
SSTI漏洞基础分析
浅析Python沙盒逃逸
​ 沙盒逃逸的过程就是在一个代码执行的环境下,脱离种种过滤和限制,最终拿到shell权限的过程。也就是绕过各种黑名单最终拿到系统命令执行权限。
ly0n
2020/11/04
2K0
浅析Python沙盒逃逸
Python安全 | Flask-jinja2 SSTI 利用手册
很多刚开始学习SSTI的新手可能看到上面的利用方法就蒙圈了,不太懂为什么要这么做,下面来讲一下关于Python中类的知识。面向对象语言的方法来自于类,对于python,有很多好用的函数库,我们经常会再写Python中用到import来引入许多的类和方法,python的str(字符串)、dict(字典)、tuple(元组)、list(列表)这些在Python类结构的基类都是object,而object拥有众多的子类。
HACK学习
2021/06/24
3.3K0
Python安全 | Flask-jinja2 SSTI 利用手册
深度辨析 Python 的 eval() 与 exec()
Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。
Python猫
2019/04/09
6850
PY交易之简单沙盒绕过
p猫表哥要我写一些有趣的东西,本人比较菜,见识也比较短浅,也不会ri站,更不会打ctf,只能随便说点我觉得还是比较好玩的东西。 本人在大二上学期的时候自学了Python,然而可能由于身体觉醒得有点晚了
ChaMd5安全团队
2018/03/29
1.4K0
PY交易之简单沙盒绕过
SSTI 模板注入 | 一个找可利用类的小脚本
注意, 跑到的结果不一定准确, 可以使用_name\_参数确定模块(类)的名字, 结合直接访问链接到原文确认可行性后进入python控制台导入相关模板后检查看看是不是确实有索要查找的函数方法
h0cksr
2023/05/17
9900
SSTI模板注入Plus | Bypass
除了标准的python语法使用点(.)外,还可以使用中括号([])来访问变量的属性
h0cksr
2023/05/17
4570
SSTI模板注入Plus | Bypass
Python安全编码
代码注入攻击指的是任何允许攻击者在网络应用程序中注入源代码,从而得到解读和执行的方法。
知一
2021/12/07
5920
CTFshow——SSTI
个人感觉SSTI有点难度且繁琐的..哎,还是有好多不会的,只能参照着师傅的解法尝试复现一下。
全栈程序员站长
2022/11/01
1.9K0
CTFshow——SSTI
FlaskJinja2 开发中遇到的的服务端注入问题研究 II
0x00. 前言 本篇文章是 《Flask Jinja2 开发中遇到的的服务端注入问题研究》<点击阅读原文查看链接>续篇,我们继续研究 Flask Jinja2开发中遇到的SSTI问题,本篇文章会介
FB客服
2018/02/28
9560
FlaskJinja2 开发中遇到的的服务端注入问题研究 II
Python炫技操作:花式导包的八种方法
__import__ 函数可用于导入模块,import 语句也会调用函数。其定义为:
Python进阶者
2020/06/10
1.1K0
Python安全之SSTI——Flask/Jinja2
SSTI(Server Side Template Injection),又称服务端模板注入攻击。其发生在MVC框架中的view层,常见的用于渲染的模板有Twig、FreeMarker、Velocity、Smarty等。
Jayway
2020/06/02
4.3K0
Python安全之SSTI——Flask/Jinja2
相关推荐
一文看懂Python沙箱逃逸
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验