Django HackInScience练习应用。
项目描述
HackInScience
设置
首先安装 firejail
和 redis
(来自您的包管理器),例如
apt install firejail redis
安装依赖项
python -m pip install requirements.txt
然后运行经典的Django操作
./manage.py migrate
./manage.py loaddata initial
./manage.py compilemessages --ignore '.tox' --ignore '.venv'
./manage.py createsuperuser
然后在两个不同的终端中,或者断开其中一个终端
./manage.py correction_bot
和
./manage.py runserver
现在您可以登录到 /admin
,从这里您可以更改您的安装的任何内容:管理用户、创建页面、创建练习、团队、审查答案等等。
已自动为您创建了 /exercises
页面和 /help
页面,您可能想从向 exercises
页面添加一些练习开始。
或者,可以单独使用 hkis
应用,以自定义注册、URL等,为此您可以将hkis作为django应用安装到您的项目中
pip install django-hkis
页面
页面实际上是在您网站中的一个URL,它可以包含文本(存储为Markdown)和/或练习。
例如,自动创建的 /help
页面旨在存储文本,但不包含练习,而 /exercises
页面旨在展示一些练习,可能是在一些介绍文本之后,或者没有任何文本。
您可以仅使用这两个页面,或者创建一组完整的页面,例如每个编程语言一个练习页面,或者按主题、学生班级等创建页面。
登录后,用户将被重定向到第一个页面(具有最小 position
的页面)。
分类
在一个页面内部,您可以选择按类别分组练习,而不是作为单个大列表显示。当有50~70个练习时,这会变得非常有用。
如何贡献
更新初始固定装置
要保存initial.json文件,请使用
./manage.py dumpdata --indent 4 -e admin -e auth.Permission -e contenttypes -e sessions -o hkis/fixtures/initial.json
翻译
模板使用django的makemessages
和compilemessages
命令进行翻译
$ ./manage.py makemessages --locale fr
$ ./manage.py makemessages --locale fr --domain djangojs
# Edit the .po files
$ ./manage.py compilemessages --ignore '.tox' --ignore '.venv'
练习(标题和措辞)通过管理界面(或API)进行翻译,我们使用django-modeltranslation。
检查机器人是如何工作的?
答案通过Celery进行负载均衡,分配给校正工作者,因此可以有多个机器专门用于处理大量答案。
一旦被工作者接收,工作者会运行两件事
-
一个可选的
pre_check.py
脚本,用于设置与这些答案相关的特定内容(所需文件和目录、翻译等)。 -
然后在沙盒中启动
check.py
脚本(无互联网连接、受限的文件系统、CPU、内存使用等)。这是检查学生答案的脚本,协议很简单:如果脚本以非零状态退出,则答案错误。打印的内容(包括stdout和stderr)将作为Markdown显示给学生。如果答案正确且没有打印任何内容,则使用默认的祝贺信息。
pre_check.py
和check.py
都是用Python编写的,但它们并不限于检查Python答案,如果您想检查shell脚本或C语言,或任何其他内容,check.py
可以使用subprocess
运行答案脚本,或编译答案代码,或执行所需的其他操作。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建分发
django_hkis-1.0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 510941ecd21588c6b8f4863b25e53cefa338e5771dd1d6eed623dd3be2a989f9 |
|
MD5 | 429de694794ea8d171e694f960428f9c |
|
BLAKE2b-256 | 18d8ab3aef8e82a3a5969c1fde8034d65455fbecc2bd3a1b940fc73dd6016be3 |