Soy principiante y necesito un poco de apoyo. Todo funciona en la aplicación, pero cuando en el formulario escribe "nueva york", falta "_" en la url.
mi codigo es
def index(request): if request.method == 'POST': city = request.POST['city'] if city == '': return redirect('index') res = urllib.request.urlopen(f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid=1b79ea7b1251b76ccda81d6bd').read() json_data = json.loads(res) datas = { "country_code" : str(json_data['sys']['country']), "cordinate": str(json_data['coord']['lon'])+ ''+ str(json_data['coord']['lat']), "temp": str(int(json_data['main']['temp']-273)) + 'C', "pressure" : str(json_data['main']['pressure']), "humidity" : str(json_data['main']['humidity']), }
En respuesta recibe "
InvalidURL at / URL can't contain control characters. '/data/2.5/weather?q=bielsko biala&appid=1b79ea7b1251b76cc0b41a81d6bd' (found at least ' ')
Estoy buscando soluciones en Internet pero no puedo resolverlo yo mismo. Muchas gracias por toda tu ayuda
Solo necesita reemplazar los espacios en la ciudad con los valores codificados.
Prueba esto:
import urllib.parse res = urllib.request.urlopen(f'http://api.openweathermap.org/data/2.5/weather?q={urllib.parse.quote(city)}&appid=1b79ea7b1251b76ccda81d6bd').read()
esto es para codificar la ciudad en la URL.