亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

嘗試運行 Flask 應用程序時出現錯誤“函數”對象沒有屬性“as_view”

嘗試運行 Flask 應用程序時出現錯誤“函數”對象沒有屬性“as_view”

www說 2023-03-16 15:49:28
一年多以后,我開始編寫 Flask 應用程序,我想我忘記了什么。下面的代碼會導致錯誤:from flask import Flaskfrom flask import jsonifyfrom flask_restplus import Resource, Apifrom home_iot.config import readerfrom download_audio.ydla import downloadapp = Flask(__name__)_api = Api(app, catch_all_404s=True, version=0.1,          title="REST HTTP API's Gateway",          descrition="REST API gateway")api_ns = _api.namespace("iot", description="API.")@api_ns.route("/tcpserver", methods=["GET"])def advertise_tcpserver():    ip = reader.get_server_ip()    return jsonify({"tcpserver": ip})if __name__ == "__main__":    app.run(host='127.0.0.1')錯誤是:$ python 應用程序.pyTraceback (most recent call last):  File "app.py", line 29, in <module>    @api_ns.route("/tcpserver", methods=["GET"])  File "/Users/ciasto/pyenvs/flaskrestplusiot/lib/python2.7/site-packages/flask_restplus/namespace.py", line 98, in wrapper    self.add_resource(cls, *urls, **kwargs)  File "/Users/ciasto/pyenvs/flaskrestplusiot/lib/python2.7/site-packages/flask_restplus/namespace.py", line 87, in add_resource    api.register_resource(self, resource, *ns_urls, **kwargs)  File "/Users/ciasto/pyenvs/flaskrestplusiot/lib/python2.7/site-packages/flask_restplus/api.py", line 264, in register_resource    self._register_view(self.app, resource, namespace, *urls, **kwargs)  File "/Users/ciasto/pyenvs/flaskrestplusiot/lib/python2.7/site-packages/flask_restplus/api.py", line 287, in _register_view    resource_func = self.output(resource.as_view(endpoint, self, *resource_class_args,AttributeError: 'function' object has no attribute 'as_view'
查看完整描述

2 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

希望這可以幫助那些有同樣錯誤但沒有找到解決方案的人

要完成@v25給出的答案,您必須通過從 flask_restplus 中的 Ressource 類繼承來為您的命名空間提供資源。

以下示例對我有用

環境:

  • Ubuntu 18.04

  • 蟒蛇 3.7.1

蟒蛇要求:

  • 燒瓶==1.1.2

  • flask-restplus==0.13.0

  • 工具==0.16.1

源代碼:iot.py

from flask_restplus import Namespace,Resource


api_ns = Namespace("iot", description="API.")


@api_ns.route("/tcpserver")

class AdvertiseTcpserver(Resource):

    def get(self):

        #TODO return the correct ip value

        return {"tcpserver": "ip"}

app.py


from .iot import api_ns

from flask import Flask

from flask_restplus import Api


app = Flask(__name__)


_api = Api(app, catch_all_404s=True, version=0.1,

      title="REST HTTP API's Gateway",

      descrition="REST API gateway")


_api.add_namespace(api_ns, path='/some/prefix')


app.run()

測試命令:


#!/bin/sh

wget localhost:5000/some/prefix/tcpserver

如果這有幫助,請告訴我。


查看完整回答
反對 回復 2023-03-16
?
達令說

TA貢獻1821條經驗 獲得超6個贊

不要認為這是用flask_restplus. 查看縮放文檔。


您可能正在尋找類似的東西:


iot.py


from flask_restplus import Namespace


api_ns = Namespace("iot", description="API.")


@api_ns.route("/tcpserver", methods=["GET"])

def advertise_tcpserver():

    ip = reader.get_server_ip()

    return jsonify({"tcpserver": ip})

然后在你的主app.py中:


# other imports 


from .iot import api_ns


app = Flask(__name__)


_api = Api(app, catch_all_404s=True, version=0.1,

          title="REST HTTP API's Gateway",

          descrition="REST API gateway")


_api.add_namespace(api_ns, path='/some/prefix')

此外,您似乎正在使用已停產的 Python 2.7。我建議使用虛擬環境或 docker 升級到最新版本,以免弄亂系統的 python。


查看完整回答
反對 回復 2023-03-16
  • 2 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號