Как сделать web interface, который бы...

User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Как сделать web interface, который бы...

Post by perasperaadastra »

На raspberry сейчас стоит Flask, который принимает два числа, когда к нему обращаются в формате
http://192.168.1.168/switch/i/j
где i и j это целые числа меньше 7

Я хочу сделать веб-интерфейс, чтобы можно было выбрать i с помощью элемента radio и j с помощью кнопок, причем при нажатии на одну из кнопок для выбора j, на сервер должны отправиться i и j.

Первая часть (radio) вроде бы понятна:

Code: Select all

<form action="">
<input type="radio" name="i" value="1">
<input type="radio" name="i" value="2">
...
</form>
А вот с кнопками не совсем ясно. Как сделать, чтобы кнопка отправляла и i и j?

PS Чувствую я, нужно менять get на post.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Как сделать web interface, который бы...

Post by perasperaadastra »

Кажется я понял!

Code: Select all

<form action="/switch" method="get">
  <input type="radio" name="i" value="1"><br>
  <input type="radio" name="i" value="2"><br>
...
  <button type="submit" name ="j" value="1" formtarget="_blank">Submit</button>
  <button type="submit" name ="j" value="2" formtarget="_blank">Submit</button>
...
</form>

Тверпен
Уже с Приветом
Posts: 5713
Joined: 14 Jul 2011 00:39

Re: Как сделать web interface, который бы...

Post by Тверпен »

Value кнопки здесь ни при чем. POST тоже необязателен. Когда форма сабмитится, то все ее компоненты посылаются на сервер.
Не те цели держали на прицеле.
User avatar
stenking
Уже с Приветом
Posts: 14455
Joined: 26 May 2006 02:39

Re: Как сделать web interface, который бы...

Post by stenking »

perasperaadastra wrote:Кажется я понял!

Code: Select all

<form action="/switch" method="get">
  <input type="radio" name="i" value="1"><br>
  <input type="radio" name="i" value="2"><br>
...
  <button type="submit" name ="j" value="1" formtarget="_blank">Submit</button>
  <button type="submit" name ="j" value="2" formtarget="_blank">Submit</button>
...
</form>

Хитрый да?:) Только это будет работать не во всех браузерах - я думаю FF не поведётся на второй сабмит.
Бога нет.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Как сделать web interface, который бы...

Post by perasperaadastra »

Как же быть тогда? Если для i и j делать списки или радио, а потом жать submit, то получится очень трудоемко... Это выключатель светильников — быстрее будет дойти до обычного выключателя, чем мучиться с формой на экране телефона...

А что если сделать по кнопке (каждую в индивидуальной форме) для каждой комбинации i и j? Как я понимаю два value к кнопке не приделать, но можно посылать строку типа '32', а дальше заставить сервер это разбивать на отдельные i и j?
XAOC
Уже с Приветом
Posts: 1657
Joined: 26 Jan 2006 20:42

Re: Как сделать web interface, который бы...

Post by XAOC »

stenking wrote:
perasperaadastra wrote:Кажется я понял!

Code: Select all

<form action="/switch" method="get">
  <input type="radio" name="i" value="1"><br>
  <input type="radio" name="i" value="2"><br>
...
  <button type="submit" name ="j" value="1" formtarget="_blank">Submit</button>
  <button type="submit" name ="j" value="2" formtarget="_blank">Submit</button>
...
</form>

Хитрый да?:) Только это будет работать не во всех браузерах - я думаю FF не поведётся на второй сабмит.
тролишь да? всю жизнь при необходимости использовал такую конструкцию, везде работало. проверил в FF последнем, все пучком.
User avatar
stenking
Уже с Приветом
Posts: 14455
Joined: 26 May 2006 02:39

Re: Как сделать web interface, который бы...

Post by stenking »

XAOC wrote: тролишь да? всю жизнь при необходимости использовал такую конструкцию, везде работало. проверил в FF последнем, все пучком.
Это известное поведение еще от IE 6/7.

http://mikefunk.com/2012/04/09/ie-multi ... ttons-bug/" onclick="window.open(this.href);return false;

Я вот не берусь гарантировать что даже сегодня такой код будет работать во всех браузерах на всех платформах. Может да, но может и нет. Нет, для perasperaadastra думаю всё нормально будет, не думаю что кто-то там чем-то старым или экзотическим пользуется. Это я просто вредничаю )
Бога нет.
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Как сделать web interface, который бы...

Post by perasperaadastra »

Спасибо всем за советы!
Я сделал кнопки, передающие строки, которые состоят из комбинаций i и j. А дальше Flask вычленяет нужный параметр.

Code: Select all

<form method="post" action="/switch">
<button type="submit" name="ij" value="11">i=1, j=1</button>
... кнопки для остальных комбинаций...
</form>
Единственная проблема теперь, что при нажатии на кнопку в адресной строке браузера появляется "192.168.1.168/switch". Flask, конечно, возвращает в корень сайта, но адресную строку не обновляет. Можно ли как-то сделать, чтобы html не менял адресную строку при отправке формы через post?
User avatar
fruit6
Уже с Приветом
Posts: 4207
Joined: 10 Jan 2004 01:22
Location: n-sk -> MD -> VA

Re: Как сделать web interface, который бы...

Post by fruit6 »

можете добавить жаба скрипт (keyword: ajax) или делать POST в / endpoint
User avatar
perasperaadastra
Уже с Приветом
Posts: 20128
Joined: 21 Feb 2009 22:55
Location: Лох Онтарио

Re: Как сделать web interface, который бы...

Post by perasperaadastra »

Оказалось, во Flask можно сделать redirect на корень.

Return to “Вопросы и новости IT”