有没有使用python在django中导入请求库的解决方案?

时间:2019-03-27 07:21:48

标签: python django

我正在尝试在Django中链接我的python代码,因为我正在使用天气API,并使用它来提取任何国家/地区的数据。

我想使用API​​链接中的位置,日期,格式和tp。问题是我不知道如何从同一链接中提取这4件事。它向我显示了这一点:

Traceback (most recent call last):
  File "C:\Users\Muahr\source\repos\RCAI-Project\Pest\api.py", line 14, in <module>
    url=int(api_address+city+24+date_time)
TypeError: must be str, not int

同时,我将整个代码集成到Django中,这给我一个错误,即未定义请求。

原始代码:

import requests
import simplejson
import time
from daytime import DateTime    
api_address='http://api.worldweatheronline.com/premium/v1/past-weather.ashx?key=abc123&q=&format=json&date=&tp=24'
city=input("enter\n")
ask=input("enter date\n")
date_format = "%Y-%m-%d"
date_time = datetime.strptime(ask, date_format)
url=int(api_address+city+24+date_time)
json_data=requests.get(url).json()
formatted_data=json_data['data']
print(json_data)

1 个答案:

答案 0 :(得分:0)

import requests

city = input("enter city\n")
date = input("enter date\n")
json_data = requests.get(
    'http://api.worldweatheronline.com/premium/v1/past-weather.ashx',
    params=dict(
        key='abc123...',
        q=city,
        format='json',
        date=date,
        tp='24'
    )
).json()
formatted_data = json_data['data']
print(formatted_data)

代码出现问题:

date_time = datetime.strptime(ask, date_format)
url=int(api_address+city+24+date_time)
  1. 您不能用+连接一个str,int和datetime。它们都必须是字符串。
  2. 您可以先将它们转换为字符串,但是由于您的日期时间是从input开始的字符串,因此您无需首先解析它。
  3. 结果显然无法转换为整数。
  4. 您不需要URL的整数。
  5. 结果仍然与正确格式的URL相去甚远,在正确的位置用&=来表示参数。 +不会神奇地将参数插入所需的位置。您需要这样做:
url = ('http://api.worldweatheronline.com/premium/v1/past-weather.ashx?key=abc123&q='
        + city + '&format=json&date=' + ask + '&tp=24')
  1. 以上不是很好。 requests可以通过params为您解决这个问题。