【问题标题】:Django - Pysftp authentication error on templateDjango - 模板上的 Pysftp 身份验证错误
【发布时间】:2017-01-31 07:17:32
【问题描述】:

我正在尝试解决这个问题,但我不知道如何解决。

我正在与pysftp 合作开发 Django。问题是如果一切正常,什么都不会发生,但如果我输入错误的hostusuarioclave。我仍然得到Success,而不是Error. Something Failed.Authentication Failed,就像当我输入错误的hostusuarioclave 时打开Django 控制台一样。 我怎样才能使它在两个地方都得到Authentication failed 错误? Django 控制台和 Django webapp? 谢谢..!!

这是我所拥有的:

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
            try:
                SFTP_bajar(host,usuario,clave)
                messages.success(request,' Success')
                return redirect('auth_login')
            except:
                messages.error(request, 'Error. Something Failed.')
    else:
        form=sftpForm()
    return render(request, 'sftp.html', {'form':form})

def SFTP_bajar(host,usuario,clave):
    try:
        transferencia = sftp.Connection(host=host, username=usuario, password=clave)

        remotepath= 'myremotepath'
        localpath="mylocalpath"

        print ('\n' + 'Success')

    except Exception, e:
        print str(e)

【问题讨论】:

    标签: python django sftp pysftp


    【解决方案1】:

    不要在SFTP_bajar 中捕获任何异常

    def SFTP_bajar(host,usuario,clave):
        transferencia = sftp.Connection(host=host, username=usuario, password=clave)
    
        remotepath= 'myremotepath'
        localpath="mylocalpath"
    
        print ('\n' + 'Success')
        # here do whatever you have to do on your sftp server
    

    然后在您的 sftp_form 视图中更改您捕获异常的方式。您必须永远不要做的一件事是像您正在做的那样捕获广泛的异常并忽略它。捕捉特定的。

            from pysftp import AuthenticationException
    
            try:
                SFTP_bajar(host,usuario,clave)
                messages.success(request,' Success')
                return redirect('auth_login')
            except AuthenticationException:
                messages.error(request, 'Authentication failed')
            except :
                import traceback
                traceback.print_exc()
    

    【讨论】:

    • 谢谢!但我在exception...global name 'AuthenticationException' is not defined 中遇到以下错误。我该如何解决这个问题?
    • 你需要导入它。我以为你已经从 pysftp 导入了相关的东西
    • 就是这样。谢谢楼主!
    猜你喜欢
    • 2021-05-19
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-08
    • 2016-03-27
    • 1970-01-01
    相关资源
    最近更新 更多