В настоящее время я работаю над приложением (python / django / redis) для отслеживания и регистрации перемещения зерна на ферме.
Мое основное приложение работает нормально, сейчас я пытаюсь заставить работать мою последнюю страницу.
Цель этой страницы - загрузить ее на вкладку samsung, находясь в зоне действия сети, а затем перейти в поле, чтобы собрать некоторые данные, которые регистрируются в localStorage.
Как только он закончил, он вернулся в сеть и нажал кнопку загрузки. Когда кнопка нажата, она отправляет запрос на публикацию, сообщая представлению, что необходимо собрать данные из localStorage и поместить их в клавишу Redis.
Вот код вида:
def creationField(request):
if request.method == 'POST':
driver = webdriver.Chrome()
url='XXX.X.X.XX:XXXX/XXXXXXX/XXXXXXX'
driver.get(url)
storage = LocalStorage(driver)
for i in range(1,50) :
keyCubage = 'Wagon_'+ str(i) + '_cubageWagon'
keyLimite = 'Wagon_'+ str(i) + '_limiteWagon'
keyCiterne = 'Wagon_'+ str(i) + '_numCiterne'
keyPBM = 'Wagon_'+ str(i) + '_pbmWagon'
keyTar = 'Wagon_'+ str(i) + '_tarWagon'
cubageWagon = storage.get(keyCubage)
limiteWagon = storage.get(keyLimite)
numCiterne = storage.get(keyCiterne)
pbmWagon = storage.get(keyPBM)
tarWagon = storage.get(keyTar)
if (cubageWagon == None or limiteWagon == None or numCiterne == None or pbmWagon == None or tarWagon == None):
result = "Break"
break
else:
result = "REDIS WORK"
r = redis.StrictRedis(host=settings.REDIS_AD, port=settings.REDIS_PORT, db='14')
key = 'Wagon_' + str(i)
r.hmset(key, {'Cubage': cubageWagon, 'limite': limiteWagon, 'numCiterne': numCiterne, 'pbmWagon': pbmWagon, 'tarWagon': tarWagon})
return render(request, 'creationField.html', locals())
Класс LocalStorage:
class LocalStorage:
def __init__(self, driver) :
self.driver = driver
def __len__(self):
return self.driver.execute_script("return window.localStorage.length;")
def items(self) :
return self.driver.execute_script( \
"var ls = window.localStorage, items = {}; " \
"for (var i = 0, k; i < ls.length; ++i) " \
" items[k = ls.key(i)] = ls.getItem(k); " \
"return items; ")
def keys(self) :
return self.driver.execute_script( \
"var ls = window.localStorage, keys = []; " \
"for (var i = 0; i < ls.length; ++i) " \
" keys[i] = ls.key(i); " \
"return keys; ")
def get(self, key):
return self.driver.execute_script("return window.localStorage.getItem(arguments[0]);", key)
def set(self, key, value):
self.driver.execute_script("window.localStorage.setItem(arguments[0], arguments[1]);", key, value)
def has(self, key):
return key in self.keys()
def remove(self, key):
self.driver.execute_script("window.localStorage.removeItem(arguments[0]);", key)
def clear(self):
self.driver.execute_script("window.localStorage.clear();")
def __getitem__(self, key) :
value = self.get(key)
if value is None :
raise KeyError(key)
return value
def __setitem__(self, key, value):
self.set(key, value)
def __contains__(self, key):
return key in self.keys()
def __iter__(self):
return self.items().__iter__()
def __repr__(self):
return self.items().__str__()
Я уверен, что локальное хранилище не проблема, я могу писать / читать из того, что я пробовал с некоторыми js.
Моя текущая проблема заключается в том, что когда я нажимаю кнопку загрузки и отправляю сообщение, моя страница вылетает со следующей ошибкой:
Message: unknown error : unhandled inspector error:{"Code":"-32000", "message","Cannot navigate to invalid URL"}
если я скопирую и вставлю URL, который кажется ему недействительным, он загрузится без проблем, поэтому я не совсем уверен, что делает его недействительным?