Webapplikationen machbar? Welche Frameworks etc.?

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.
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

Hallo liebe Leute,

ich bin kompletter Programmier-Neuling. Ich bin eigentlich PL/Systemadmin und seit neuestem GF meiner eigenen kleinen Firma.
Ich möchte gerne zusätzlich 1-2 Sprachen erlernen, die mir auch in Zukunft nützen könnten. (PowerShell mal außen vor!)
Ich habe mir grob 3 "für mich große Projekte" vorgenommen, die welche alles Webbrowseranwendungen sein sollen, und weiß nicht ob man das mit Python "ordentlich" realisieren kann. Mir gefällt die Python Syntax sehr, daher frage ich...

1. Eine Kunden-Passwortverwaltung mit Zugriff auch von außen (Muss natürlich "sicher" sein!)
- Für unterwegs Passwörter/Logins für Kundensysteme abrufen, mit Autotype Funktion. Ähnlich wie KeePass, aber als Webanwendung und etwas ansehnlicher.

2. Ein Rechnungsprogramm mit integrierter Zeiterfassung (Angebot, Rechnung, Lieferschein...)
- Es gibt hier zwar eine Menge am Markt, aber irgendwie ist das immer nicht so ganz das Wahr. Viel schon ausprobiert, aber entweder viel zu viele Funktionen für mich und deswegen zu teuer, oder es fehlen Key-Features wie die Zeiterfassung.

3. Die Erstellung einer Customer-Score-Card (Habe ich mal so benannt)
Dieses kann auch gerne eine reine Desktop-Anwendung sein!
- Anhand gewisser Kriterien und Priorisierungen werden meine Kunden/Interessenten ausgewertet und ein Score vergeben. Anhand dieses Scores sieht man dann wie "wichtig" dieser Kunde dem Unternehmen ist.
Das muss natürlich gepflegt werden. Da kommt dann auch sowas rein wie Zahlungsverzüge, Stornierungen etc.
Ist eher ein Spielzeug für mich als GF. Sehr schön wäre es dann wenn aus der Score-Übersicht dann auch so eine Art Radar-Chart erstellt wird, indem man den Kunden im Vergleich zum "Durchschnitt, oder im direkten Vergleich mit einem anderen Kunden sehen kann":
Radar-Chart bsp: https://www.visualcinnamon.com/wp-conte ... -Chart.png

Das sollte doch mit dem passendem Framework wie z.B. Django, Flask oder Pyramid möglich sein, oder?
Was denkt Ihr ist das "einfachste" Projekt mit dem man nachdem man die Basics beherrscht starten kann? Die Customer-Score-Card denke ich, oder?

Ich danke Euch für kommende Hilfestellungen!

Nopp

Achja: Das Rechnungsprogramm, sowie die Passwortverwaltung sollten Mehrbenutzer-fähig sein.
Moon
User
Beiträge: 37
Registriert: Mittwoch 20. Dezember 2017, 15:21

Hey,

meiner Meinung nach kann man deine 3 Wunschprojekte mit HTML5, CSS3, Javascript und PHP programmieren.

Grüße,
Moon
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

Moon hat geschrieben: meiner Meinung nach kann man deine 3 Wunschprojekte mit HTML5, CSS3, Javascript und PHP programmieren.
Hey, danke für Deinen Beitrag, aber das war nun wirklich nicht meine Frage :?
Ich weiß, dass man das mit 95 möglichen Sprachen implementieren kann, aber ich bezog dass nun mal direkt auf Python.
Inwiefern sich etwas anderes besser eignet kann man ja hier gerne erörtern :)
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@Moon: PHP? In welcher Vergangenheit lebst du denn? *SCNR*

@Nopp: Das geht sicherlich sowohl mit Django, Flask und Pyramid. Gefühlt wird Pyramid weniger verwendet, jedenfalls gibt es dazu im Forum hier selten Fragen. Persönlich bevorzuge ich Django wegen der höheren Integration der Komponenten. Ist aber Geschmackssache, Flask + SQLAlchemy + WTForms ist sicherlich auch ein potentes Gespann.

Grundsätzlich solltest du erst mit Webprogrammierung erst anfangen, wenn du die Grundlagen von Pythin gut drauf hast. Um Webframeworks richtig zu nutzen, sollte man die Objektorientierung richtig verstanden haben, damit man auch versteht, was man das macht.

Was du bei Webanwendung halt auch immer bedenken muss, ist, dass du das alle absichern musst. Also nicht nur die Anwendung an sich, sondern auch den Server, der das ganze ausliefert. Gerade, wenn man Kundendaten auf dem Server hat, will man da ja nichts verlieren bzw. gehackt werden.

Gruß, noisefloor
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

@noisefloor:
Danke für Deinen Kommentar!
Das bestärkt mich schon mal Python zu nutzen. Natürlich muss ich hier erst die Basics lernen, und von 0 anfangen.
Ich habe aber gerne für mich ein oder mehrere Ziele fest im Blick, wohin ich es denn überhaupt schaffen möchte, und das sind meine 3 Anwendungen.

Die Sicherheit ist mir natürlich auch extrem wichtig! Sollte mich Python aber auch hier keine Probleme in der Machbarkeit geben.
Ich denke, dass Python aber auch allgemein für mich einen deutlichen Mehrwert schaffen könnte, da es auch in der Administration in puncto Automatisierung viele Einsatzgebiete bietet.

Ich für mich wichtiger Punkt ist, dass die Programme am Ende "schön" aussehen müssen. Geht das mit Python?
Nicht klobig oder altbacken. Es soll halt einen gewissen Feinschliff aufweisen.
Gibt es aktuelle Projekte / Software, die mit Python - Django/Flask/Pyramid für das Web erstellt wurden?

Ich danke schon mal für weitere Hilfe!
Sirius3
User
Beiträge: 17748
Registriert: Sonntag 21. Oktober 2012, 17:20

@Nopp: Sicherheitsfragen sind (fast) nie Programmiersprachenabhängig, obwohl es da Sprachen gibt, die einige Stolpersteine aus dem Weg räumen (Perl) und welche, die einem extra noch mehr Gefahrenstellen aufmachen (PHP). Python ist in der Hinsicht relativ sicher, weil mit den Frameworks typische Fehler, wie Injections, Hashbombs, CrossSiteScripting, etc, abnehmen und Python auch sicher gegen Pufferüberläufe, ininitalisierte Variablen, etc ist.

Schön hängt von Deinem eigenen Geschmack ab, Man kann auch mit PHP schön programmieren, tut nur keiner. Python gilt gemeinhin als sehr kompakt und leicht lesbar, weil kaum Sonderzeichen gebraucht werden (außer Klammern, Rechenoperatoren, Komma und Doppelpunkt).

Natürlich gibt es aktuelle Projekte, tausende: https://www.python.org/success-stories/
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

Ich glaube ich habe mich falsch ausgedrückt. Nicht die Syntax, bzw., der Code soll schön sein, sondern dass was der Anwender am Ende vor seinen Augen sieht. Quasi die GUI/Software, was auch immer.
Hier habe ich damals Tkinter Anwendungen gesehen, die mega klobig aussahen. Nichts für das Auge eines potentiellen Kunden.
__deets__
User
Beiträge: 14538
Registriert: Mittwoch 14. Oktober 2015, 14:29

WOOOT WOOT PARTY PUUUP WOOT WOOT

Ok. Nur als kleine Einstimmung :)

Grundsätzlich kann man alle deine Probleme mit Python lösen, und das auch bezogen auf den Code elegant und unter Nutzung bewährter Bibliotheken. Es ist denke ich eine gute Wahl. Ich bin aber auch ein Stammuser heir ;)

Die Frage nach der optischen Ansprechung hat damit allerdings nix zu tun. Ganz deutlich schon mal bei einer Webanwendung. HTML, CSS & JS sind da die Technologien, und auch dafür gibt es wieder einen ganz eigenen Zoo von Frameworks wie zB bootstrap, angular, react etc. Nirgends Python in Sicht. Das ist beschränkt auf die Serverseite.

Willst du hingegen auf eine Desktop oder mobile Anwendung hinaus, dann geht auch das, zB mit Kivy, Qt ud QML. Auch da sind aber die Gestaltungsmöglichkeiten nicht wirklich von Python abhängig.

Nun aber ein Wort zu deinen geplanten Anwendungen: 1 ist gut, schönes Einsteigerprojekt. Die Sicherheit sollte gewährleistbar sein via HTTPS und konsequenter Nutzung user accounts zum Zugriff.

2 und 3 aber halte ich für massiv überambitioniert. Eine Auftragssoftware schreibt man nicht mal so eben. Erst recht nicht für billiger als eine von der Stange. Das Gesetzes konform, revisionssicher, mit der gewünschten Funktionalität und Nutzerfreundlichkeit umzusetzen kostet MANNJAHRE. Ich behaupte die hast du nicht. Nicht als GF, dessen Geschäft auch noch laufen soll. Und die Kundenbewertung ist ne schöne, und gerade der Mode (machine learning) folgende idee. Aber zum einen setzt sie auf Projekt 2 auf, und zum anderen erfordert sie auch noch massive Konzeptionsarbeit. Ein solches Scoring entsteht nicht aus der lameng.

Wenn du dir das wirklich antun willst, Kauf eine Lösung für zwei mit einer Exportschnittstelle, und dann Probier dich an 3 anhand der gelieferten Daten. Dann kann man weitersehen.
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

Vielen Dank für Deinen Beitrag deets.
Okay, bzgl. Python im Backend und im Frontend dann HTML & Co. muss ich mich genauer mit befassen, denn ich weiß noch gar nicht wie man diese dann miteinander sprechen lassen kann. Dachte das geht alles aus einer Hand. Ich weiß aber auch, dass ich hier noch sehr viel, vor allem die Basics, zu lernen habe. Grade im Bezug auf "Backend + Frontend Kommunikation". Gibt es dazu hier im Forum vielleicht nützliche Lektüre bzw. Tutorials?

Exakt die beiden Projekte (1+3), die du genannt hast möchte ich später zwingend selbst gebaut haben.
Und die Nummer 3 muss nicht zwingend in dem 2ten Projekt integriert sein. Ich kann die Daten auch händisch pflegen, bzw. kann man ja auch Zeilen aus einem Report auslesen lassen, welches ein "Standard-Rechnungsprogramm" erstellt. Aber manche Dinge werden auch dort nicht drin stehen, wie z.B. voraussichtliche Einnahmen im kommenden Jahr etc.

Ich weiß, alles sehr wage, aber ich bin ambitioniert das anzupacken, auch wenn ich noch am Anfang stehe. Ich bin für jede Hilfe offen :)
__deets__
User
Beiträge: 14538
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich glaube nicht, das wir hier spezielle Tutorien haben. Das betrifft erstmal ganz allgemein die Struktur von Webanwendungen. Seit es sie gibt. Ggf (und das meine ich nicht despektierlich) sowas wie Web Programming for dummies erstehen. Oder entsprechendes Material. Welche Sprache im backend verwandt wird ist da egal, das ist dann auch auf Python anwendbar.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Python im Backend und im Frontend dann HTML & Co. muss ich mich genauer mit befassen, denn ich weiß noch gar nicht wie man diese dann miteinander sprechen lassen kann. Dachte das geht alles aus einer Hand.
Der "klassische" Weg bei der Webprogrammierung ist, dass die HTML-Seite, die Server ausliefert, serverseitigen generiert wird und dann an den Browser geschickt wird. Das ist auch der Standard bei Django, Flask und Co.

Seitdem die JavaScript Engines der Browser leistungsfähiger geworden sind kann man es auch so machen, dass der Server "nur noch" die Daten liefert (wie AJAX oder eine REST-API oder ...) und alles mittels JavaScript Client-seitig, also im Browser verarbeitet und dargestellt wird. Ein paar JS-Frameworks dazu hat __deets__ ja schon genannt. Dann kannst du auf dem Server auch Python einsetzen (sehr gut sogar), brauchst aber nicht unbedingt Django oder so, sondern vielleicht eher so was wie Hug, was auf das einfache und schnelle Erstellen von Rest-API ausgelegt ist.

Der klassische Weg hat für Einsteiger den Vorteil, dass du nicht unbedingt noch, zusätzlich zu Python, JavaScript lernen muss.

Gruß, noisefloor
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

noisefloor hat geschrieben: Der "klassische" Weg bei der Webprogrammierung ist, dass die HTML-Seite, die Server ausliefert, serverseitigen generiert wird und dann an den Browser geschickt wird. Das ist auch der Standard bei Django, Flask und Co.
Hey!
Danke für Deinen Text!
Ich habe den obigen Text leider nicht verstanden, glaube ich. Also die HTML Seite wird von Anfang an auf der serverseite generiert und im bereits fertigem Zustand zum Browser geschickt, ist es das?
Hab das Gefühl dass mich die Kommasetzung irgendwie verwirrt :lol:
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

genau. Serverseitig baut die Template-Engine (bei Django: wahlweise Django Template Engine oder Jinja2, bei Flask: Jinja2) das Template zusammen. Das Template enthält HTML, Platzhalter für Werte aus Datenbankabfrage etc. Die fertige HTML-Seite wird den Browser geliefert und der Browser braucht keine Daten mehr via AJAX, Websockets oder was auch immer vom Server nachladen.

Gruß, noisefloor
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

Verstehe. Also beeinflusst man dann auch das Aussehen von der Seite mit dem gewählten Web-Framework (z.B. Django), weil man das ja sonst mit z.B. CSS auf der Seite direkt macht, oder?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Nopp hat geschrieben:Verstehe. Also beeinflusst man dann auch das Aussehen von der Seite mit dem gewählten Web-Framework (z.B. Django), weil man das ja sonst mit z.B. CSS auf der Seite direkt macht, oder?
Äh, nein.

Im Browser hast du klassisch HTML, CSS und Javascript. Auf Serverseite hast du Python und z.B. Django.

Deine auf dem Server laufende Webanwendung schickt HTML und CSS zum Client. Dort wird dann die Anzeige vorgenommen. HTML wird häufig in der Webanwendung dynamisch generiert, während die gesendeten CSS-Dateien meistens statisch sind.
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

Ich weiß nicht, ob man meine Frage überhaupt versteht :lol:
Frage ich mal anders. An welcher Stelle wird der CSS und HTML Code beeinflusst?
Weil Ihr schreibt, dass der CSS Code übergeben wird. Von Django? Dann wird der CSS Code ja von der serverseite generiert, also von Django / Python, nehme ich an.
Ich glaube ich sollte mir noch mal die Architektur von einer Webanwendung zur Güte tun.
Danke für Eure Gedult mit mir :)
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

nee. Du bindest das Stylesheet in der Regel statisch ein, wie halt bei einer HTML-Seite.

Ein Template ist oft nichts anders als eine "normale" HTML-Seite (inkl. Link auf CSS, ggf. einer `<script>` Sektion etc.), nur das Teile der Seite aus Platzhaltern besteht, welche dann serverseitig mit Werten befüllt werden, wenn die Template-Engine das Template verarbeitet.

Mal ein Beispiel aus dem Netz für Jinja2:

[codebox=html5 file=Unbenannt.html]<body>
<div class="container">
<p>My string: {{my_string}}</p>
<p>Value from the list: {{my_list[3]}}</p>
<p>Loop through the list:</p>
<ul>
{% for n in my_list %}
<li>{{n}}</li>
{% endfor %}
</ul>
</div>
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script src="http://netdna.bootstrapcdn.com/bootstra ... "></script>
</body>
[/code]

Funktioniert bei Django ähnlich.

Gruß, noisefloor
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

Nopp hat geschrieben:Ich weiß nicht, ob man meine Frage überhaupt versteht
Doch, möglicher sogar viel besser, als Du annimmst. Für das, was Du vorhast, brauchst Du viel Erfahrung. Und wenn Du diese hast, dann brauchst Du viel Zeit für die Umsetzung dieser Projekte. Aber fang einfach an, sonst bekommst Du diese Erfahrung nie. Die optische Erscheinung von Webanwendungen gehört üblicherweise zur Frontend-Entwicklung, während Programmiersprachen wie Python das Backend bedienen. Webapplikationen, die über Hobby-Seiten hinausgehen, weisen sehr schnell eine Komplexität auf, die von Einsteigern in das Thema praktisch immer völlig unterschätzt werden.
Nopp
User
Beiträge: 10
Registriert: Freitag 22. Dezember 2017, 10:37

Alles klar!
Danke Euch beiden.
Ich werde einfach anfangen mich in die Basics reinzuarbeiten, ohne einen bestimmten Fokus und wenn ich diese verstanden habe, geht es dann weiter.
Es werden aber noch die ein oder andere Frage hier zu kmmen :) !

VG und frohe Festtage!
Moon
User
Beiträge: 37
Registriert: Mittwoch 20. Dezember 2017, 15:21

@Moon: PHP? In welcher Vergangenheit lebst du denn? *SCNR*
@noisefloor : Wie meinst du das? PHP ist nicht Vergangenheit. PHP ist eine wichtige Programmiersprache in der Webentwicklung. Meinst du e-Commerce Shops werden ohne PHP erstellt? Oder gar eine Registrierung?
Antworten