用于创建在线问卷/调查的django应用程序。

fef-questionnaire的Python项目详细描述


#fef问卷

\界面,支持多种语言。

实例可以通过django内容类型模块链接到任意对象。

[seantis](https://github.com/seantis),本身派生自[rmt](https://github.com/rmt)。大女儿接过这个项目,给它取名为[ed问卷](git://github.com/eldest-daughter/ed-questiony),因为他们一直在使用这个项目,seantis版本已经进入稳定的发展状态。他们希望进行一些功能更改,并决定自行进行维护。

原始
*标签2.0-Seantis版本的原始更新中继
*标签2.5-包含原始Seantis版本和截至2015年9月12日合并的所有PR。它被认为是存储库的向后兼容版本。它与v2.x分支不兼容。

"fef调查问卷"版本的创建是为了添加将调查问卷链接到图书数据库中单个图书的功能。我们称之为V4.0。应用程序经过了广泛的更新和更新。这项工作是由梅隆基金会资助的[映射免费电子书供应链项目](https://www.publishing.umich.edu/projects/mapping the free ebook/)。

本手册将为您提供一个总体的布局和概念,但请帮助我们改进。

同样的步骤也可用于将调查问卷集成到现有站点(尽管您可能会输入未铺砌的方式)。
**concepts**讨论数据模型和应用程序的设计。
**migration**解释如何在2.0中使用用1.0定义的调查问卷。
***2.0死后**讲述2.0开发过程中的一些经验。






Docs将引导您完成从头开始创建问卷应用程序所需的步骤。对于将问卷整合到现有网站中的任务来说,它也应该非常方便。

为新站点创建文件夹:

cd site


bin/激活

install django



创建django站点


为问题创建一个位置

mkdir apps
cd apps

source

git clone git://github.com/ebookfoundation/fef-questiony.git

r apps文件夹

cd fef问卷


下一步是安装问卷。


这将使您在每次问卷更改时都不会运行"python setup.py install"。

现在,让我们配置基本问卷或将settings.py、url.py和models.py文件从"example"文件夹复制到"mysite/mysite",然后跳到[初始化数据库](初始化数据库)。




还将区域设置和请求缓存中间件添加到中间件类:

"问卷调查。请求缓存。请求缓存中间件"

将问卷调查模板目录以及您自己的添加到模板:

'dirs':[os.path.join(base-dir,'mysite/templates/')],

已安装的应用程序:

"Transmeta"、
"问卷"、
"问卷.page"、

若要完成设置,请添加FEF问卷特定参数。以我们为例,我们将使用:

调查问卷进度='async'
调查问卷使用会话=false
调查问卷项目模型='mysite.book'
调查问卷显示项目结果=true

到站点的url配置。示例应用程序向您展示了如何操作。

最后,我们希望在mysite应用程序中添加一个模型,以便我们将问卷链接到。它需要有一个名为"items"的back关系


Class Book(models.model):
title=models.charfield(max_length=1000,default=)
landings=generirelation(landing,相关的_query_name="items")
def_uu unicode_uuu(self):
return self.title



\(要使其正常工作,您必须在"settings.py"中设置数据库)。首先,在cli中导航回"mysite"文件夹:

cd../.


检查您是否在正确的文件夹中,键入"ls":如果您可以在文件列表中看到"manage.py",则表示您很好。否则,请找到包含该文件的文件夹。然后键入:

python manage.py syncdb

看看`./apps/fef-questiony/example/templates/base-questiony.html`。如果您正在将应用程序添加到现有项目中。

恭喜您,您已经设置了问卷的基础知识!此时,此网站不会真正执行任何操作,因为没有定义调查问卷。


在您喜爱的文本编辑器中打开"mysite"文件夹。

您需要

python manage.py migrate


如果要使用多种语言,请将i18n上下文处理器添加到模板中
"上下文处理器":['django.template.context\processors.i18n',]

,并将中间件设置为在[django翻译文档](https://docs.djangoproject.com/en/1.8/topics/i18n/translation/)中描述

pings.py`):启动服务器!

启动开发服务器:


,然后导航到[localhost:8000](http://localhost:8000/)。

否则,将没有项目可供您链接调查问卷。

接受调查问卷。这个"例子"有英文和德文翻译。"地图调查"仅限英语。





\*登陆主题是填写问卷的人。

研究对象主要用于参与者重复回答问卷的研究。在这种情况下,可以输入主题。无论是谁(即运行调查问卷应用程序的人),都可以定期发送电子邮件,邀请受试者填写调查问卷。


稍后将详细介绍发送电子邮件。

当然,并非每个调查问卷都是研究的一部分。有时候你只想知道人们认为什么更可怕:海盗还是忍者?

*(这是海盗!)

虽然对于本例来说,投票是一个更好的选择,但是可以通过使用匿名主题的ed问卷来找到问题的答案。下一章*问卷*将更详细地讨论这一点。


runinfo指的是运行并携带有关它的信息。

运行结束时,它将被删除,某些信息将被转移到运行信息历史记录中。

runs可以由任意数量的逗号分隔的标记进行标记。如果使用了标记,则问题只能在给定标记是runinfo的一部分时出现。


\runinfo history

runinfo history用于引用一组答案。

您可以使用多种不同的类型:

**choice yes no**-是或否
**choice yes no comment**-是或否,有机会对答案进行评论
**choice yesno**-是或否或whaaa?
**open**-一个简单的单行输入框答案
**choice multiple freeform**-包含多个用户定义答案的多个答案
**range**-可以从中选择一个数字的范围
**number**-一个数字
**timeperiod**-一个时间段
**custom**-使用自定义的自定义问题模板
**comment**-不是问题,只是显示给用户的注释
**same as**-与另一个问题的类型相同

*其中一些类型取决于检查或选择。例如,可以通过将检查设置为"range=1-100 step=1"来控制数字问题。范围问题也可以使用前面提到的检查和"unit=%"。如果要给用户提供十个额外的选项,其他问题(如选择多项自由形式)需要一个"extracount=10"。

我很想详细介绍这里的所有细节,但时间不够,所以我唯一的选择是请您参阅qprocessor子模块,它处理所有问题类型。*

下一步是问题编号。只要在同一页上显示多个问题,问题编号就用字母数字定义问题的顺序。这个数字也用来指问题。

问题的文本是将要询问用户的内容。在"settings.py"文件中定义的每种语言都可以有一个文本。

到目前为止,并不是所有的问题都支持这一点,但大多数问题都支持这一点。

问题的一个重要方面(及其父母,问题集)是检查字段。checks字段做了很多事情(可能太多了),其中最重要的是定义某个问题或问题集是否应该显示给当前主题。

用户回答
**required if="number,answer"**表示如果带*number*的问题等于*answer**
**shownif**与requiredif相同,则该问题是必需的,但定义是否显示了问题。
**male only**仅显示给男性受试者
**femaleonly**仅显示给女性受试者
**if tag="tag"**仅当给定的标记在runinfo中时才显示问题

这:
`iftag="foo or bar"`或`requiredif="1,yes and 2,no"`


问题集最终是一页的问题。同一问题集中的问题显示在同一页上。

只有一个区别,**必选**和**必选**不做任何事。

答案的值存储为json。

如果你有一个数据库,里面有你想问的问题,这很有用。


1.x到2.0的迁移
加入我们的第二个项目的Seantis问卷。我们做这个项目没有问卷的创建者的帮助,在这段时间里我们基本上是独立完成的。

你的网站必须提供和做一些调查问卷的工作。如果您的站点是为同一站点上有其他需求的公司定制的调查问卷,那么您最终将集成代码,这些代码将调用调查问卷以运行安装程序,并且您可能会查看答案记录以提供某种摘要。

使用一个很好的api,它是不存在的。

我们将调查问卷的复杂度卸载到客户定义的excel文件中,并生成检查以将复杂度复制到我们的应用程序中。

尽管这种方法确实工作良好,但它并不能为您提供良好的性能。问题是,如果你有数百个问题runinfo标记,您最终会在计算每个请求的进度条上花费大部分cpu周期。正是由于这个原因,我们实现了问卷调查进度设置(您可以通过查看example settings.py了解更多信息)。


我们在页面呈现后使用ajax执行进度条,从而设法保持较低的呈现时间。不过,这只是权宜之计。在一个巨大的调查问卷中计算一次跑步的进度仍然是一项繁重的工作,因此对于真正巨大的调查问卷,可以考虑完全取消进度条。仍有一些优化工作要做,但它本质上仍然是调查问卷中最慢的部分,因为归根结底,解释大量的检查并不是你能快速完成的,除非你的名字是pypy,而且你的程序员非常有天赋。

###没有足够的测试来做一些简单的测试,但是还需要更多的测试。更多的测试也意味着可以进行更多的重构,这是好事,因为确实需要进行一些重构。


调查问卷的正确工具。无论如何,如果您希望您的客户使用问卷的结构,您可能必须编写自己的管理界面。当前版本不够好。


4.0更改
----
4.0版本尚未测试与以前版本的兼容性。

*断开的链接已修复。应用程序在会话模式和非会话模式下工作。
*我们已更新到Bootstrap 3.3.6,并为可访问性实现了标签标记
*添加了"登录",以便可以将调查响应链接到应用程序中的任意模型。添加了模板标记,允许问题和答案引用这些模型。
*添加了问题类型,以便在不要求问题的情况下提供选择。
*增加了所需问题的样式。
*导出了响应数据固定。
*与django 1.8兼容。与django其他版本的兼容性尚未测试。
*视图重构
*文档已更新以反映django 1.8。
*电子邮件和主题功能尚未测试

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归