Seite 1 von 1

Externes HTML input Feld in Python abfragen und überprüfen

Verfasst: Mittwoch 22. Oktober 2014, 18:17
von aCrylic
Hallo Leute,

ich hätte eine Frage, bezüglich einer externen HTML Datei, die das beinhaltet.

Code: Alles auswählen

<form method="post" action="anmeldung">
	     <p>Vorname:<br><input type="text" required="required" name="vorname"/>
	     <button type="submit">Anmelden</button>
</form>
Ich rufe ja durch den action="anmeldung" parameter, die

Code: Alles auswählen

def anmeldung(self, *args, **kwargs)
auf in Python.
Nun möchte ich einfach einen Fehlerfall überprüfen, ich möchte einfach sichergehen, dass das Feld, auch tatsächlich in der externen HTML Datei existiert, also wenn das Feld im Formular "Vorname" existiert, dann soll er weiter machen, wenn nicht, dann einfach irgendeine Fehlermeldung zurückgeben. Ich habe es so versucht

Code: Alles auswählen

def anmeldung(self, *args, **kwargs):

 form = cgi.FieldStorage()
  if "vorname" not in form:
   return "<p>Error</p>"

Nur es geht leider nicht, anscheinend findet er das ganze HTML Formular nicht, wie kann ich das input feld finden mit cgi.Fieldstorage ? :K



MfG

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 18:40
von Sirius3
@aCrylic: bist Du jetzt von CherryPy auf CGI umgestiegen? Wie wird anmeldung aufgerufen? Hast Du die Post-Daten schon vor dem CGI-Aufruf mal eingelesen?

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 18:53
von aCrylic
Also die Sache ist die, da ich **kwargs benutze, um die Attribute des Formulares "Anmeldung" auszulesen und weiter zu verarbeiten, was auch alles funktioniert, muss ich trotzdem überprüfen, da ich CherryPy benutze, ob das Eingabefeld in Html wirklich existiert ?! Ich rufe das Anmeldeformular mit einem verweis auf die Pythonmethode /anmeldung auf und dort wird mir das Formular durch ein markup returnt. Ich will jetzt einfach überprüfen, ob es die Eingabefelder wirklich gibt, denn dass kann man mit **kwargs nicht machen, laut unserem Professor. Gibt es da nicht einfach eine Möglichkeit, die Externedatei zu laden und dann einfach nach dem Feld zu fragen ?


Gruß

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 19:17
von BlackJack
@aCrylic: Am einfachsten wäre es wohl *nicht* ``**kwargs`` zu verwenden sondern die Argumente alle explizit aufzuführen. Dann sollte ja automatisch eine Fehlermeldung kommen wenn nicht alle angegeben wurden.

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 19:21
von aCrylic
Gibt es denn trotzdem eine Möglichkeit, herauszubekommen mit **kwargs, ob das Eingabefeld tatsächlich existiert ? Es gibt nämlich einen Fall, wo ich 2 Buttons habe und ich halt vorher nicht weiß, welcher Button von dem User benutzt wird.

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 19:22
von Sirius3
@aCrylic: :? Du kannst doch nicht verschiedene Frameworks mischen und hoffen, dass die sich untereinander schon verständigen!!
Leider ist es so, dass viele Profs Anfängervorlesungen für eine läßtige Pflicht halten und zwar ständig auf die vermeintlichen hippen Sprachen und Frameworks springen, aber immer noch auf dem Stand von vor 30 Jahren stehen geblieben sind und ihre alten Konzepte über alles stülpen wollen.

Hast Du schonmal in kwargs hineinschaut, bevor Du solchen Behauptungen glaubst?

Von welcher Externen Datei redest Du?

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 19:25
von aCrylic
Ja, klar, ich hole mir ja die "Keys" so raus hier.

Code: Alles auswählen

vorname = kwargs.get('vorname')
nachname = kwargs.get('nachname')
Die sind dann auch in meiner Variable drin, nur unser Prof. sagte, dass man zusätzlich prüfen muss, weil wir CherryPy benutzen, ob die HTML Anmeldefelder im Formular, auch tatsächlich existieren ?

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 19:29
von Sirius3
Um zu prüfen, ob ein Schlüssel in einem Dictionary ist, gibt es den `in`-Operator. Denn kannst Du natürlich auch auf `kwargs` anwenden. Andererseits liefert `get` None zurück, wenn der Schlüssel nicht existiert, ein leeres Feld ist dagegen ein leerer String. Aber normalerweise muß man nicht zwischen diesen beiden Fällen unterscheiden und kann gleich die Eigenschaft nutzen, dass sowohl None als auch ein leerer String in einem boolschen Kontext zu False evaluiert wird.

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 19:55
von aCrylic
Hmm, eine andere Frage hätte ich noch.

Wenn ich in meiner def anmelden(self, *args, **kwargs): methode bin, wie kann ich denn ganz einfach, eine andere funktion in dieser funktion aufrufen ? Ich will halt eine variable übergeben an die andere funktion und die macht halt was mit der, wenn die funktion fertig ist, soll meine anmelden funktion natürlich noch weiter ihre arbeit ausführen und dann returnen.

Code: Alles auswählen

def anmelden(self, *args, **kwargs):
 
 var = "test"

 func(var)

 weitere_var = "bin noch nicht fertig im anmelden"
 weitere_var2 = "jetzt kann ich was an anmelden returnen"

return weitere_var2

so ? Weil irgendwie klappt das nicht in Python, einfach eine Funktion aufzurufen wie in C/C++ -.-

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 20:08
von Sirius3
@aCrylic: warum soll das denn nicht funktionieren? Woran merkst Du, daß es nicht funktioniert?

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 20:19
von aCrylic
Also, ich habe das hier gemacht.

Code: Alles auswählen

def test(self):

 var = "ich bin ein string"

 func(var)
 
 var2 = "ich werde nicht übergeben an func"
 return var2


def func(var):

 print(var)

 return print("test kann jetzt weiter machen")

dann gibts diese Fehlermeldung "NameError: global name 'func' is not defined"


? :roll:

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 20:24
von aCrylic
Ach, ich habs glaube ich ! Ich muss self.func() machen anscheinend

Re: Externes HTML input Feld in Python abfragen und überprüf

Verfasst: Mittwoch 22. Oktober 2014, 20:25
von Sirius3
@aCrylic: Wenn die Funktion irgendetwas mit der Klasse zu tun hat, dann ja, andernfalls solltest Du sie in den globalen Kontext verschieben.