首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django 1.9:在应用程序/模型的管理站点上添加一个自定义按钮来运行python脚本

Django 1.9:在应用程序/模型的管理站点上添加一个自定义按钮来运行python脚本
EN

Stack Overflow用户
提问于 2016-04-24 12:54:51
回答 2查看 3K关注 0票数 3

我在django项目中创建了一个应用程序。这个应用程序有四种型号。我可以添加/修改/删除所有四种模式的管理网站。但是对于这四种模式中的一种(比如- ModelXYZ),我需要为这个表中的每个条目添加一个自定义按钮。目前,我可以看到“保存”,“删除”等按钮,每个条目在ModelXYZ表中。我需要添加另一个按钮“运行”,点击它将执行一个python脚本编写的应用程序。目前,我正在像这样运行那个脚本-

代码语言:javascript
复制
python manage.py shell
>>> execfile("my_app/my_script_1.py")
>>> execfile("my_app/my_script_2.py")

脚本名也存储在每个条目的ModelXYZ表中。

Django文档说管理站点是可定制的,但我不太确定如何通过单击按钮运行python脚本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-25 08:04:45

我就这样解决了它,解决了我的目的:-

代码语言:javascript
复制
class Site(models.Model):
    name = models.CharField(null=False, blank=False, max_length=256, unique=True)
    script = models.CharField(null=False, blank=False, max_length=256)
    def __unicode__(self):
       return u"{0}".format(self.name)

然后在我的app/admin.py中,我写道:-

代码语言:javascript
复制
from django.contrib import admin

from .models import *

def run(self, request, queryset):
    id=request.POST.get('_selected_action')
    siteObj=self.model.objects.get(pk=id)
    self.message_user(request, "Running: " + siteObj.script)
    execfile(siteObj.script)
run.short_description = "Run the script"

class SiteAdmin(admin.ModelAdmin):
    actions = [run]
    model = Site

# Register your models here.
admin.site.register(Site, SiteAdmin)
票数 0
EN

Stack Overflow用户

发布于 2016-04-24 15:26:36

您可以编写自定义命令:https://docs.djangoproject.com/en/1.9/howto/custom-management-commands/

然后从代码中使用call_command:command调用命令

要从管理员调用,您可以创建一个自定义操作:https://docs.djangoproject.com/en/1.9/ref/contrib/admin/actions/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36823380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档