python之flask应用的一些疑问

学习flask过程中,遇到一个奇怪的问题,可能是自己学艺不精吧,希望高手指正

# 视图函数
class ShuBook:
    isbn_url = 'http://t.yushu.im/v2/book/isbn/{}'
    keyword_url = 'http://t.yushu.im/v2/book/search?q={}&count={}&start={}'

    @classmethod
    def search_by_isbn(cls,isbn):
        url = cls.isbn_url.format(isbn)
        print(locals())
        result = HTTP.get(url)   # result是dict格式的 json会被转化为字典 这里没有传递第二个参数,就会采用默认的
        print(locals())   #------------------------
        return result

    @classmethod
    def search_by_keyword(cls,keyword,count=15,start=0):
        url = cls.keyword_url.format(keyword,count,start)
        result = HTTP.get(url)
        return result
# 自己的HTTP模块
import requests

class HTTP:
    @staticmethod
    def get(self, url, return_json = True):
        r = requests.get(url)
        # restful API
        # json
        if r.status_code != 200:
            return {} if return_json else ''
        return r.json() if return_json else r.text   

程序提示错误
get() missing 1 required positional argument: 'url'
我这里第二个参数不设置的话应该自动套用 我设置的默认参数return_json = True,这个是什么缘故呢?
谢谢指正

开满天机
浏览 526回答 4
4回答

回首忆惘然

def search_by_isbn(cls,isbn): url = cls.isbn_url.format(isbn) print(locals()) result = HTTP.get(url) print(locals()) return result # 这里产生的是dict,需要解析成json返回,某则不能读取 折腾了好几天的问题,还是败在了基础薄弱上,谢谢大家的耐心解答让我理清了思路,谢谢综合前面几个高手的结论,我发现了自己的问题,所以投票还是给自己吧.........免得得罪人

料青山看我应如是

报错说的是url参数少了,不是return_json少了。你get()调用的时候传进url了么?

翻过高山走不出你

你的 HTTP 类中的函数使用了静态函数的装饰器,那么你的 get() 函数里的参数,有一个 self,这个参数是需要你自己输入。你单独调用了url,那么调用的过程就是 get(self=url, url, return_json = True),所以会报错,缺少url的赋值

沧海一幻觉

HTTP类中get方法是静态方法,不需要self参数 class HTTP: @staticmethod def get(url, return_json = True): # 没有self参数 r = requests.get(url) # restful API # json if r.status_code != 200: return {} if return_json else '' return r.json() if return_json else r.text
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python