请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

按老师写的调取不了juhe接口

老师,我用得是python3.10,跟据老师的代码去写,跑不通,聚合数据提供了的示python3的示例代码,放到juhe.py里能跑,用到了rullib库,另外用到了try except判断,有一些看不懂,到views/weather.py里,就不知道怎么去调用juhe.py了,就卡在这里了。麻烦帮我看一下,谢谢

聚合数据提供代码:

import urllib
import urllib.request as request
import urllib.error as error
import json


# 天气预报查询示例
def main():
    api_url = 'http://apis.juhe.cn/simpleWeather/query'  # api地址
    params_dict = {
        "city": "北京",  # 查询天气的城市名称,如:北京、苏州、上海
        "key": "替换成我自己的了",  # 您申请的接口API接口请求Key
    }
    params = urllib.parse.urlencode(params_dict)  
    try:
        req = request.Request(api_url, params.encode())  
        response = request.urlopen(req)  
        content = response.read()  
        if content:
            try:
                result = json.loads(content)
                error_code = result['error_code']
                if (error_code == 0):
                    temperature = result['result']['realtime']['temperature']
                    humidity = result['result']['realtime']['humidity']
                    info = result['result']['realtime']['info']
                    wid = result['result']['realtime']['wid']
                    direct = result['result']['realtime']['direct']
                    power = result['result']['realtime']['power']
                    aqi = result['result']['realtime']['aqi']
                    print("温度:%s\n湿度:%s\n天气:%s\n天气标识:%s\n风向:%s\n风力:%s\n空气质量:%s" % (
                        temperature, humidity, info, wid, direct, power, aqi))
                else:
                    print("请求失败:%s %s" % (result['error_code'], result['reason']))
            except Exception as e:
                print("解析结果异常:%s" % e)
        else:
            # 可能网络异常等问题,无法获取返回内容,请求异常
            print("请求异常")
    except error.HTTPError as err:
        print(err)
    except error.URLError as err:
        # 其他异常
        print(err)


if __name__ == '__main__':
    main()

正在回答 回答被采纳积分+3

1回答

咚咚呛 2022-11-03 00:04:05

嗯,如果单独跑得通的话,说明juhe的API本身是没有问题的,至于如何防止在views下面,这个就是属于Django框架层面的了,这里可以参考下老师提供的源代码,需要理解两点:
1. Django是如何处理请求的
2. Django是如何路由请求到views目录下的

理清楚这两点,自然就明白如何把以上代码嵌入到django框架内了。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕沐1390363 #1
    老师,juhe就是如上面的代码,params_dict 里的city : city,views下weather函数我是跟老师的代码同步的,然后我通过Postman请求任何一个城市天气,在Postman里数据为null,却会在pycharm终端打印出来对应城市的天气,显示是请求正常的,状态码200,就是Postman里的数据为null,GET和POST都为null
    回复 有任何疑惑可以回复我~ 2022-11-11 12:56:59
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信