Я делаю запрос get с fetch в приложении django, он работает в разработке, но не в продакшене, и я не могу решить проблему.
Приложение развернуто на heroku. Когда я запускаю программу на своей машине, она работает нормально, но на производстве я получаю различные ошибки. В Google Chrome в консоли я получаю следующую ошибку:
Uncaught (in promise) SyntaxError: Неожиданная лексема < в JSON в позиция 0
В Firefox ошибка в консоли выглядит следующим образом
Uncaught (in promise) SyntaxError: JSON.parse: неожиданный символ в строка 1 столбец 1 данных JSON
Я получил следующее сообщение от Часового:
Exception gaierror: [Errno 11001] getaddrinfo failed Файл "urllib3\connection.py", строка 169, in _new_connection conn = connection.create_connection( Файл "urllib3\util\connection.py", строка 73, в create_connection for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): Файл "socket.py", строка 953, в getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x00000177DC7693A0>: Не удалось установить новое соединение: [Errno 11001] getaddrinfo failed Файл "urllib3\connectionpool.py", строка 699, in urlopen httplib_response = self._make_request( Файл "urllib3\connectionpool.py", строка 382, in _make_request self._validate_conn(conn) Файл "urllib3\connectionpool.py", строка 1010, в _validate_conn conn.connect() Файл "urllib3\connection.py", строка 353, в connect conn = self._new_connection() Файл "urllib3\connection.py", строка 181, в _new_connection raise NewConnectionError(
MaxRetryError: HTTPSConnectionPool(host='www.wordreference.com', port=443): Max retries exceeded with url: / (Причина NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000177DC7693A0>: Не удалось установить новое соединение: [Errno 11001] getaddrinfo failed')) Файл "requests\adapters.py", строка 439, in send resp = conn.urlopen( Файл "urllib3\connectionpool.py", строка 755, в urlopen retries = retries.increment( Файл "urllib3\util\retry.py", строка 574, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause))
ConnectionError: HTTPSConnectionPool(host='www.wordreference.com', port=443): Max retries exceeded with url: / (Причина NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000177DC7693A0>: Не удалось установить новое соединение: [Errno 11001] getaddrinfo failed')) (5 дополнительных кадров не были не отображаются) ... Файл "requests\api.py", строка 75, in get return request('get', url, params=params, **kwargs) Файл "requests\api.py", строка 61, in request return session.request(method=method, url=url, **kwargs) Файл "requests\sessions.py", строка 542, in request resp = self.send(prep, **send_kwargs) Файл "requests\sessions.py", строка 655, in send r = adapter.send(request, **kwargs) Файл "requests\adapters.py", строка 516, в send raise ConnectionError(e, request=request)
Ниже приведен наиболее подходящий код. У меня нет большого опыта и я не знаю, как определить проблему, я буду очень благодарен за любую помощь, которую я могу получить.
views.py
def translate_word(request, word):
wr = WordReference('es', 'en')
wr_obj = wr.translate(word)
entries = wr_obj['translations'][0]['entries']
twlist = []
for entry in entries:
for dict in entry['to_word']:
if dict['meaning'] not in twlist:
twlist.append(dict['meaning'])
return JsonResponse({"twlist": twlist}, safe=False)
demo.js
translate: (word) => {
fetch(`/translate/${word}`, {
headers:{
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Requested-With': 'XMLHttpRequest', //Necessary to work with request.is_ajax()
},
})
.then(response => {
return response.json()
})
.then(data => {
// code to display the data on the html, the error occurs in the previous .then
})
},