Skip to main content
 首页 » 编程设计

python之Django 使用来自表单字段的变量运行 python 脚本

2025年05月04日39daizhj

我正在尝试构建一个 Web 界面来执行一些 Python 脚本。一个这样的脚本用于登录到网络设备并运行一些命令,然后将它们保存到一个 excel 文件中。

我不确定这是否是正确的方法,但我已经将脚本变成了管理命令。

我可以使用 call_command() 让脚本从 View 运行,但我对如何将表单字段作为变量传递给脚本感到困惑。

以下是我认为相关的部分;

表单.py

class BaseLineForm(forms.Form): 
    username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Required', 'size': 20}), error_messages={'required': 'Required'}) 
    cec_pass = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Required', 'size': 20}), error_messages={'required': 'Required'}) 
    enable_pass = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': 'Required', 'size': 20}), error_messages={'required': 'Required'}) 
    <additional form fields snipped...> 

View .py

from baseline.forms import BaseLineForm 
from django.core.management import call_command 
 
def baseline(request): 
    if request.method == 'POST': 
        form = BaseLineForm(request.POST) 
        if form.is_valid(): 
            username = form.cleaned_data['username'] 
            password = form.cleaned_data['cec_pass'] 
            enable = form.cleaned_data['enable_pass'] 
            call_command('baseline') 

基线.py

from django.core.management.base import BaseCommand, CommandError 
 
class Command(BaseCommand): 
    args = '' 
    help = '' 
 
    def handle(self, *args, **options): 
        <I have tried to import the view but I get an error cannot import name views> 
        from baseline import views <if I run this from the shell it imports fine> 
        <rest of script here> 

环境; Centos 6.4、virtualenv、django 1.6、python 2.6

我真的很难过,所以提前感谢任何有想法的人。

请您参考如下方法:

这可能对将来的人有帮助,所以我在这里添加。

在项目主目录的task.py文件中添加任务

@app.task(name='tasks.get_baseline') 
def get_baseline(args): 
    result = call(args) 

将任务导入 View

from nettools import tasks 

创建参数列表

args = ['/path/tp/script/get_baseline.py', username, password, enable, user_email, device] 

运行任务

tasks.get_baseline.delay(args)