Flask——server.py引入其他python文件


問題描述

  今天用Flask寫web項目時出現了一個問題:AttributeError: 'function' object has no attribute 'check',即在server.py中引用其他python文件失敗,不能調用其他python文件的函數。

  2020/6/10。今天寫另一個flask項目,發現全局引用的文件,其函數也能在注冊路由中使用,那為什么之前就不行呢???

  2020/6/11。我好像知道為啥了。。。可能是我把文件名和函數名寫重了,都用的check,哪個近就按哪個算?

解決方法

  我一開始是在server.py開頭引入的python自定義模塊,然后在注冊路由的函數中使用自定義的函數,結果一直報AttributeError。百度搜索未發現解決方法(也可能是我的搜索關鍵詞沒用對?)。后來嘗試將引入自定義模塊的語句放到注冊路由的函數中、調用函數的語句前,發現正常運行。示例如下:

@app.route('/check')
def check():
    expression = request.args.get("expression", default="")
    import check
    result = check.checkExpression(expression)
    return result

結論

  長個教訓,以后創建文件必須首字母大寫,以防止函數名跟文件名沖突。

       如果在函數外引入了一個文件,就不能定義與要引入的文件名相同的函數,否則會報錯!

  如果非要定義與引入文件相同名稱的函數,可以在調用自定義模塊函數的語句上一行引入自定義模塊。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM