我正在尝试构建一个 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)
