我需要你的一些帮助,
我正在与pysftp
合作这项工作很有效,但现在我试图让它在我Django
的项目中工作,但是我想在控制台上工作得很好但是我想得到它来自form
的数据,因此我不需要使用console
来执行此操作。
这是我的观点:
def sftp_form(request):
if request.method == 'POST':
form = sftpForm(request.POST or None)
if form.is_valid():
data = form.cleaned_data
host = data['host']
usuario = data['usuario']
clave = data['clave']
print host
print usuario
print clave
else:
form=sftpForm()
return render(request, 'sftp.html', {'form':form})
def SFTP_subir():
host = raw_input('ingrese el host: ') # I want form's host here.
usuario = raw_input('ingrese el usuario: ')# I want form's usuario here.
clave = raw_input('ingrese la clave: ')# I want form's clave here.
try:
transferencia = sftp.Connection(host=host, username=usuario, password=clave)
remotepath= 'remotepath'
localpath="mylocalpath"
transferencia.put(localpath,remotepath)
print ('\n' + 'Sucess.')
except Exception, e:
print str(e)
正如您在我的代码sftp_subir()
中所看到的,它要求我提供主机,usuario和clave,但是我想让它与sftp_form()
host,usuario和clave一起使用。
答案 0 :(得分:1)
这里似乎有轻微的混淆,你不能在django网络应用中使用raw_input
。如果您使用Django as a CLI,则无法使用HTTP请求。正如@sayse在评论中建议的那样,如果您在Web应用程序中使用视图,那么您需要做的就是将第二个函数定义为接受参数的函数
def sftp_form(request):
if request.method == 'POST':
form = sftpForm(request.POST or None)
if form.is_valid():
data = form.cleaned_data
host = data['host']
usuario = data['usuario']
clave = data['clave']
SFTP_subir(hosts, usuario,clave)
else:
form=sftpForm()
return render(request, 'sftp.html', {'form':form})
def SFTP_subir(hosts, usuario,clave):
try:
transferencia = sftp.Connection(host=host, username=usuario, password=clave)
remotepath= 'remotepath'
localpath="mylocalpath"
transferencia.put(localpath,remotepath)
print ('\n' + 'Sucess.')
except Exception, e:
print str(e)
一旦你制作了这段代码,你还有很长的路要走,因为你的SFTP方法没有返回任何有用的响应。
答案 1 :(得分:0)
在您看来:
def sftp_form(request):
if request.method == 'POST':
form = sftpForm(request.POST or None)
if form.is_valid():
data = form.cleaned_data
host = data['host']
usuario = data['usuario']
clave = data['clave']
print host
print usuario
print clave
SFTP_subir(host, usuario, clave) # here you invoke the function, passing variables as arguments
else:
form=sftpForm()
return render(request, 'sftp.html', {'form':form})
然后重构你的函数以接收这些参数:
def SFTP_subir(host, usuario, clave):
try:
transferencia = sftp.Connection(host=host, username=usuario, password=clave)
remotepath= 'remotepath'
localpath="mylocalpath"
transferencia.put(localpath,remotepath)
print ('\n' + 'Sucess.')
except Exception, e:
print str(e)
答案 2 :(得分:-1)
你可以做
sftp.connect(...)
...
<4 lines following>
在request.method ==&#34; POST&#34;阻止而不是打印报表。