为argparse脚本创建web gui和任务接口的django应用程序

django-djangui的Python项目详细描述


#安圭

[![构建状态](https://travis-ci.org/chris7/django-djangui.svg?branch=master)(https://travis-ci.org/chris7/django-djangui)[![覆盖状态](https://coveralls.io/repos/chris7/django-djangui/badge.svg?branch=master)](https://coveralls.io/r/chris7/django-djangui?branch=master)

注意:djangui正在与wooey合并。大多数代码库都是djangui——因此项目不会受到显著影响(仍然基于django等)。您可以在[wooey]组织(http://www.github.com/wooey)跟踪此进度


1。[安装](安装)
1.[仅限Djangui项目](仅限Djangui)
2.[将Djangui添加到现有项目](现有)
2.[运行djangui](运行)
1.[过程文件](过程文件)
2.[两个过程](两个过程)
3.[添加脚本](添加)
4.[脚本组织](组织)
5.[脚本权限](权限)
6。[配置](配置)
7.[与s3/远程文件系统一起使用](s3)
8。[脚本指南](脚本指南)


这个项目的灵感来自于[sandman](https://github.com/jeffknupp/sandman)如何简单而强大地将用户暴露在数据库中。
这也是基于我作为一名数据科学家的需要,我需要一个能够:

1的系统。为数据分析自动记录我的工作流程
(简单的模型保存)。
2.使没有命令行经验的实验室成员能够利用python脚本。使用简单的python轻松包装任何程序,而不必对galaxy等现有工具使用特定于语言的


/一个仅限djangoi的项目

djangoi中包含一个引导程序,它将创建django项目,并自动为您设置大多数所需的设置。


1。djanguify-p项目名称
2.按照引导程序末尾的说明创建管理用户并访问管理页面
3。登录到"管理"页,无论项目在何处被托管(在本地,这将是localhost:8000/admin)


\lt;a name="existing">;<;/a>;与现有django项目一起安装


1。将"djangui"添加到settings.py中已安装的_应用程序(也可以选择djaceleri,除非您希望绑定到现有的芹菜实例)
2。将以下内容添加到URL.py:
`url(r'^',include('djangui.urls'),`
(注意:它不需要根在您的网站库,
您可以拥有r'^djangui/'…作为路由器:

3.迁移数据库:
django 1.6及以下版本:
`./manage.py syncdb`

django 1.7及以上版本
`./manage.py makemigrations`
`./manage.py migrate`

>4。确保模板上下文处理器变量中包含以下内容:
template上下文处理器=[

'django.contrib.auth.context\u processors.auth',
'django.core.context\u processors.request'
…]

<;a name="running">;<;/一个>;运行djangui

djangui依赖于一个分布式工作进程来处理任务,您可以通过在设置中将**djangui芹菜**设置为false来禁用它,这将允许您通过简单的命令来运行djangui:

`````
`````python manage.py runserver
```

,这将导致服务器执行任务,从而阻塞站点。

运行djangui的方法是使用带有[honcho]的procfile(https://github.com/nickstenning/honcho),可以通过pip安装。做一个文件,在项目根目录中调用procfile(与manage.py位于同一位置),内容如下:

````
web:python manage.py run server
worker:python manage.py芹菜worker-c 1--beat-l info
eom
```

命令:
```
honcho start
``

通过两个独立的进程

,您还可以通过调用两个命令来运行djangui(每个进程都需要一个单独的进程):

````
python manage.py celeri worker-c 1--beat-l info
python manage.py runserver
```

通过django管理界面和manage.py中的*addscript*命令可以两种方式添加管理脚本,在django管理界面中,可以通过"脚本"模型添加脚本。在这里,可以将用户权限设置为
以及外观功能,例如脚本的显示名称、描述(如果提供,否则脚本名和描述
将自动由argparse中的描述填充(如果可用)。


\文件)。
默认情况下,脚本将在"djangui脚本"组中创建。

脚本的顺序和脚本的分组可以通过
在管理中更改"脚本顺序"或"组顺序"选项来更改。

如果设置了"用户组"选项,则会将脚本使用限制为选定组中的用户。

通过取消选中"脚本/组活动"选项,脚本和组也可以对所有用户关闭。

保存用户上传文件的位置(默认:djangui_文件)

**djangui_芹菜**:布尔值,无论芹菜是否启用。如果禁用,任务将在本地运行并阻止执行。(默认值:true)

**djangui_芹菜任务**:string,djangui芹菜任务的名称。(默认值:"djangui.tasks")

**djangui_allow_anonymous**:布尔值,是否允许匿名用户提交作业。(默认值:true)


默认情况下,djangui有一个基本的用户帐户系统。它非常基础,不通过电子邮件确认注册。

**djangui-auth**:boolean,是否使用djangui的授权系统进行简单的登录/注册。(默认值:true)

**djangui_login_url**:string,如果您有现有的授权系统,则登录url:(默认值:settings.login_url

**djangui_register_url**:string,如果您有现有的授权系统,注册URL:(默认值):/accounts/register/)

**djangui_ephemeral_files**:布尔值,前提是每次重新启动时文件系统都会更改。(默认值:false)

**djangui_show_locked_scripts**:布尔值,是将锁定的脚本显示为禁用还是完全隐藏。(defalt:true——显示为禁用)

<;a name="s3">;<;/a>;远程文件系统

djangui已在Heroku上作为文件存储系统使用S3进行了测试。可以在user_settings.py中看到此设置,它为您提供了非本地服务器的起点。简而言之,您需要更改存储设置如下:

<;code>;


staticfiles\u storage=default\u file\u storage='djangui.djangistorage.cacheds3botostorage'
djangui_ephemeral_files=true


<;code>;

\lt;a name="script guide">;<;/a>;脚本指南

使脚本与djangui兼容的最简单方法是在全局范围内定义argparse类。例如:

````

import sys

parser.help='找到下面倍数之和的数字',type=int,default=1000)


def main():
args=parser.parse args()



所以我可以处理他们出现的情况,并尽可能使所有的鼓励。当前失败的一个已知区域是在"if\u name"块中定义argparse实例

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

推荐PyPI第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?