Я запускаю CGI-скрипт на локальном Win10 IIS. Все прошло нормально. Затем я установил 'dateparser' для добавления функциональности.
Это привело к ошибке, которую я цитирую здесь (результат моего AJAX-запроса):
импорт dateparser как дп
Файл "C: \ Users \ fmoeller \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ dateparser__init __. Py", строка 4, в
из .date import DateDataParser
Файл "C: \ Users \ fmoeller \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ site-packages \ dateparser \ date.py", строка 9, в
импортировать шесть
ModuleNotFoundError: нет модуля с именем 'six'
Достаточно забавно, что все работает, как и ожидалось, при запуске скрипта из командной строки.
Что может быть не так?
Вот скрипт Python:
import os, sys
import json
from datetime import datetime
import dateparser as dp
def receive_data():
content_len = int(os.environ["CONTENT_LENGTH"])
req_body = sys.stdin.read(content_len)
my_dict = json.loads(req_body)
return my_dict
def process_data(my_dict):
raw = my_dict['dt']
try:
dt = dp.parse(raw, languages=['de'])
except ValueError:
processed = ''
else:
processed = datetime.strftime(dt, '%d.%m.%Y')
my_dict['dt'] = processed
return my_dict
def return_data(my_dict):
print('Content-Type: application/json\n\n')
print(json.dumps(my_dict))
if __name__ == '__main__':
# I have commented this out just for the test from the command line !!!
# my_dict = receive_data()
# also this line is only for command line test
my_dict = {'dt': '01022020'}
my_dict = process_data(my_dict)
return_data(my_dict)
Хотя я не считаю это необходимым, это вызывающая часть javascript:
<input id="input_bis" />
<script>
document.getElementById('input_bis').onkeypress = function (e) {
if (!e) e = window.event;
if (e.keyCode == '13') {
var value = this.value
$(function () {
$.ajax({
type: "POST",
url: "http://localhost/check_date.py",
data: JSON.stringify({ "dt": value}),
dataType: "json",
success: function (response) {
document.getElementById('input_bis').value = JSON.parse(JSON.stringify(response))['dt'];
},
error: function (ajaxContext) { alert(ajaxContext.responseText) },
});
});
return false;
}
}
</script>