2014-10-06 27 views
5

Buduję witrynę za pomocą Flask, a na jednej stronie mam dwa formularze. Jeśli istnieje POST, muszę zdecydować, który formularz jest publikowany. Mogę oczywiście odjąć je od pól, które są obecne w request.form, ale wolałbym, aby było to wyraźne przez uzyskanie nazwy (określonej przez <form name="my_form">) przesłanego formularza. Próbowałem kilku rzeczy, takich jak:Jak uzyskać nazwę przesłanego formularza w kolbie?

@app.route('/myforms', methods=['GET', 'POST']) 
def myForms(): 
    if request.method == 'POST': 
     print request.form.name 
     print request.form.['name'] 

ale niestety nic nie działa. Czy ktoś wie, skąd mogę pobrać nazwę przesłanego formularza? Wszystkie wskazówki są mile widziane!

Odpowiedz

11

Nie ma "nazwy formularza". Ta informacja nie jest wysyłana przez przeglądarkę; Atrybut name na znacznikach <form> jest przeznaczony do używania wyłącznie po stronie przeglądarki (i nieaktualny do rozruchu, zamiast tego należy użyć id).

Mogłeś dodać że informacje za pomocą ukrytego pola, ale najczęstszym sposobem odróżnić formy delegowania do tej samej procedury obsługi formularz powinien dać przycisk Wyślij nazwę:

<submit name="form1" value="Submit!"/> 

i

if 'form1' in request.form: 

ale można również użyć pola <input type="hidden">, aby uwzględnić środki do rozróżniania formularzy.

+0

Dzięki! To naprawdę rozwiązuje mój problem! Nigdy nie wiedziałem, że nie zostało wysłane przez przeglądarkę. Ostatnie pytanie: co masz na myśli mówiąc "przestarzałe"? – kramer65

+0

@ kramer65: Atrybut 'name' został uznany za przestarzały w HTML 4. Nie tylko nie jest przydatny w przypadku użycia, nie jest nawet atrybutem, którego powinno się już używać. –

+0

Ah, niesamowite. Nauczyłem się html w latach dziewięćdziesiątych, po czym pracowałem głównie w systemach backendowych od lat. Więc moje umiejętności html są nieco przestarzałe ...;) Dzięki za milion! – kramer65

Powiązane problemy