Anmeldeformular mit HTML im Python WEBSERVER

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
BlackJack

@aCrylic: Eine Schleife zum Suchen braucht man nur wenn man nicht irgendwie *direkt* über einen *Schlüssel* auf *Werte* zugreifen kann. Und das kann man. Darum braucht man keine Schleife. Wenn's Dir Spass macht kannst Du das auch so lösen das man umständlich mit einer Schleife suchen muss.

Die komische Syntax ist eigentlich nicht wirklich schwer, man muss sich halt mal damit auseinandersetzen und ein Tutorial durcharbeiten statt zu hoffen das jemand „Beispielcodes” bringt. Die stehen alle schon im Tutorial in der Python-Dokumentation. Da sollten alle Datentypen behandelt werden die man JSON abbilden kann.
aCrylic
User
Beiträge: 35
Registriert: Montag 6. Oktober 2014, 23:01

Okay, schaue ich mir an. Wenn es natürlich eine suchfunktion schon gibt aus der lib für json, dann benutze ich selbstverständlich keine schleife, wäre ja sinnlos dann.

Gruß
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@aCrylic: Du kannst nicht in einer json-Datei suchen und Zeilen herauslöschen. Das Vorgehen ist immer, json-Datei komplett in eine Datenstruktur der jeweiligen Programmiersprache einlesen, diese dann zu modifizieren und alles wieder nach json zu kodieren und in eine Datei zu schreiben.
Deshalb ist so etwas ja auch ungeeignet für Server, wo mehrere Benutzer gleichzeitig Datensätze verändern. Da mußt Du dann eine Zwischenschicht programmieren, die den Zugriff regelt. Das nennt sich dann Datenbankinterface und dafür gibt es schon fertige Lösungen, die dann auch auf Binärdateien aufbauen, wo auch Datensätze herausgelöscht werden können, ohne alles neu zu schreiben. Aber wenn die Vorgabe json ist, dann solltest Du wenigstens das Interface so gestalten, dass mit wenig Aufwand eine Datenbank nachgerüstet werden kann.

Aber wie in allen Datenverarbeitungsprogrammen ist der erste Schritt, sich zu überlegen, welche Daten will ich speichern, und welche Verarbeitungsmuster soll ich bedienen können. Danach schreibt man ein Modul, das diese Verarbeitung in Methoden überführt und erst dann kümmert man sich darum, wie der Nutzer nun seine Außenansicht hat.

Was ich sagen will: Userinterface und Verarbeitung müssen klar getrennt sein und dürfen nur über eine saubere Schnittstelle miteinander kommunizieren.
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

aCrylic hat geschrieben:Wenn es natürlich eine suchfunktion schon gibt aus der lib für json, dann benutze ich selbstverständlich keine schleife, wäre ja sinnlos dann.
Angenommen, Du würdest eine Datenbank verwenden. Dann würde in Deinem Fall ein einfacher Key-Value Datastore genügen. Genau so verhalten sich auch Dictionaries. Und diese kannst Du nach json konvertieren, in eine Datei schreiben und aus dieser auch wieder herstellen. Insofern ist die Aufgabe zum Lernen gar nicht so schlecht. Und vielleicht wird das Thema "Locking" ja noch nachgeschoben. Aber der Coding-Style ist übel — wirklich.
aCrylic
User
Beiträge: 35
Registriert: Montag 6. Oktober 2014, 23:01

Kurze Frage:

Gibt es in Python eine Möglichkeit, ein Array dynamisch zu definieren ? Quasi als Objekt einer Klasse, so das der Inhalt z.b "Strings" nicht verloren gehen, wenn aus einer Methode etwas reingeschrieben wird ?
Wenn ja, wie genau ? Hab es versucht wie in C++, nur klappt dies einfach nicht, ich verliere den Inhalt des Arrays immer nachdem die Methode ausgeführt worden ist.

Gruß
BlackJack

@aCrylic: Auch in C++ verlieren lokale Variablen nach dem abarbeiten einer Methode ihre Gültigkeit. Falls Deine Frage ist wie man „Instanzvariablen” erstellt, dann arbeite bitte endlich mal ein Tutorial durch. Da Klassen in Python nicht deklariert werden *kannst* Du es gar nicht „wie in C++” versucht haben. Und wenn Du es so gemacht hättest wie die meisten die von einer statisch typisierten OOP-Sprache kommen wenn sie zu faul oder stur sind Grundlagen zu lernen, dann hätte die Liste ihre Elemente nicht verloren, eher im Gegenteil hätte sie für alle Exemplare gegolten. Weiss der Geier was Du da durch wild herum raten und probieren gemacht hast.

Nenn vielleicht Listen besser nicht Arrays. Array-Datentypen gibt es nämlich auch.
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@aCrylic: Du bist wirklich schwer zu verstehen, weil Du Wörter in einem anderen Sinn verwendest, wie es üblich ist. Was meinst Du mit "dynamisch". In Python ist alles dynamisch. Was ist ein Objekt einer Klasse? In Python sind Klassen auch Objekte, was Du aber wahrscheinlich nicht meinst. Statt Klasse meinst Du Instanz einer Klasse und statt Objekt Attribut. Aus einer Methode heraus kommen nur Rückgabewerte, oder sollten jedenfalls. In einer Methode kannst Du dagegen eine Liste modifizieren. Dass die Liste aber danach ihren Inhalt verliert, wäre schon sehr komisch. Entweder ist die Liste dann komplett weg, weil sie nur als lokale Variable existiert hat, oder sie existiert weiter, und zwar so, wie innerhalb der Methode.
Ohne Code kann man da wirklich nicht sagen, was Du falsch gemacht hast.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Neben dem gesagten gilt zu meist auch: Zeige einen minimalen, lauffähigen Code, der das Problem illustriert! Dies ist insbesondere dann sinnvoll, wenn man in der Terminologie (noch) nicht gut vertraut ist. (Wobei ich zugegebener Maßen auch den Teil zu C++ nicht verstanden habe!)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@aCrylic
Dieses Stochern im Trüben bringt doch nichts. Du muss Dich wenigstens über die Doku mit allen zu benutzenden Technologien vertraut machen. Das geht hier sicherlich allen so, da vermutlich keiner z.B. CherryPy aus dem FF beherrscht. Und Python ist nunmal kein C++, ergo musst Du dort ansetzen. RTFM!
Antworten