请稍等 ...
×

采纳答案成功!

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

Postman请求数据为null

老师,我通过Postman请求任何一个城市天气,在Postman里数据为null,却会在pycharm终端打印出来对应城市的天气,显示是请求正常的,状态码200,就是Postman里的数据为null,GET和POST都为null

Postman 截图如下:
图片描述
图片描述
图片描述
图片描述

我换其它函数请求,postman是可以返回数据的
图片描述

Postman请求,Postman返回null时pycharm终端打印结果如下图:
图片描述
图片描述

Views下weather.py代码如下:

def weather(request):
	if request.method == 'GET':
		city = request.GET.get('city')
		data = juhe.main(city)
		return JsonResponse(data=data,safe=False,status=200)
	elif request.method =='POST':
		received_body = request.body
		received_body = json.loads(received_body)
		cities = received_body.get('cities')
		response_data = []
		for city in cities:
			result = juhe.main(city)
			response_data.append(result)
		return JsonResponse(data=response_data,safe=False,status=200)

juhe API代码如下:

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


# 天气预报查询示例
def main(city):
    api_url = 'http://apis.juhe.cn/simpleWeather/query'  # api地址
    params_dict = {
        "city":city,  # 查询天气的城市名称,如:北京、苏州、上海
        "key": "1f974163bc1098fbc9e7de8450a61b3f",  # 您申请的接口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

2回答

咚咚呛 2022-11-15 23:01:32
需要把key也写上。

"key": "1f974163bc1097fbc9e8de8450a61b3f",  # 您申请的接口API接口请求Key
0 回复 有任何疑惑可以回复我~
  • 提问者 慕沐1390363 #1
    juhe API里key是写上的
    回复 有任何疑惑可以回复我~ 2022-11-15 23:40:19
  • 咚咚呛 回复 提问者 慕沐1390363 #2
    postman请求的时候,也需要,否则就请求不成功。
    回复 有任何疑惑可以回复我~ 2022-11-17 23:31:35
  • 提问者 慕沐1390363 回复 咚咚呛 #3
    老师,上面提问的最后一张截图,postman GET请求上我加上了key(127.0.0.1:8000/weather/?city=深圳&key=1f974163bc1098fbc9e7de8450a61b3f),还是返回为null,POST不知道怎么在postman里加。
    回复 有任何疑惑可以回复我~ 2022-11-20 15:17:51
咚咚呛 2022-11-14 13:10:28
贴一下你postman上的截图和pycharm的代码呢,我帮你看看。
0 回复 有任何疑惑可以回复我~
  • 提问者 慕沐1390363 #1
    我已经把截图贴在问题上面了,麻烦老师帮我看一下,谢谢
    回复 有任何疑惑可以回复我~ 2022-11-14 13:33:48
  • POSTMAN的其他请求参数也截图看下,key这些参数的配置是否和代码一致的了呢?
    回复 有任何疑惑可以回复我~ 2022-11-14 23:16:04
  • 提问者 慕沐1390363 回复 咚咚呛 #3
    老师截图我已经添加到上面了,key这些参数配置和代码一致的
    回复 有任何疑惑可以回复我~ 2022-11-15 02:15:25
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信