2017-06-16 18 views
0

私は2つのpythonファイルを持っています。これは最初のものである:別のファイルから入力

class Downloader(): 

    def __init__(self): 

     baseURL = 'https://example.com' 

    def getDownloadLink(self):    

     #linkBase = input("Text: ") 

     responseBase = requests.get(linkBase).content 
     soupBase = BeautifulSoup(responseBase, 'lxml') 

そして、第二のpythonファイル:

from flask import Flask 
from flask import request 
from flask import render_template 
from firstFile import Downloader 

app = Flask(__name__) 

@app.route('/') 
def my_form(): 
    return render_template("form.html") 

@app.route('/', methods=['POST']) 
def my_form_post(): 

    linkBase = request.form['text'] 
    #processed_text = text.upper() 

    return Downloader().getDownloadLink() 

if __name__ == '__main__': 
    app.run() 

それは私にエラーを与える:

NameError: name 'linkBase' is not defined 

は、それが第二にlinkBaseで最初のファイルからlinkBaseを接続することが可能ですファイル?

class Downloader(): 

    def __init__(self): 

     baseURL = 'https://example.com' 

    def getDownloadLink(self, linkBase):    

     #linkBase = input("Text: ") 

     responseBase = requests.get(linkBase).content 
     soupBase = BeautifulSoup(responseBase, 'lxml') 

セカンドファイル:

+0

が '' getDownloadLinkのグローバルlinkBase'を宣言

一つの解決策は、引数としてlinkBaseを追加することです'method – Dalvenjia

+2

例外メッセージとともに常に完全なトレースをポストしてください。しかし、あなたの場合、引数として 'linkBase'を' getDownloadLink'に渡すべきです。 – FamousJameous

+0

@Dalvenjiaこの方法は機能しません。同じエラー。 – jestembotem

答えて

1

ここでの問題は、あなたが存在しない変数にアクセスしようとしているということですあなたのgetDownloadLink機能の範囲内です。

def getDownloadLink(self, linkBase): 
    responseBase = requests.get(linkBase).content 
    soupBase = BeautifulSoup(responseBase, 'lxml') 

そして、関数に値を送信するようにルートを変更します:

@app.route('/', methods=['POST']) 
def my_form_post(): 
    linkBase = request.form['text'] 
    return Downloader().getDownloadLink(linkBase) 
+0

ありがとう!それは働いている! – jestembotem

0

引数として値を渡すようにコードを修正し

from flask import Flask 
from flask import request 
from flask import render_template 
from firstFile import Downloader 

app = Flask(__name__) 

@app.route('/') 
def my_form(): 
    return render_template("form.html") 

@app.route('/', methods=['POST']) 
def my_form_post(): 

    linkBase = request.form['text'] 
    #processed_text = text.upper() 

    return Downloader().getDownloadLink(linkBase) 

if __name__ == '__main__': 
    app.run()