Eigene Web App starten

Django, Flask, Bottle, WSGI, CGI…
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hi,

ich möchte mir selbst irgendeine Web App schreiben (einfach üben und lernen), jedoch bin ich gerade überfordert damit, was ich alles dafür brauche und einstellen muss.

Könnte jemand in wenigen Schritten erklären, was ich tun muss, damit ich quasi code schreiben kann, der dann local bei mir im Browser eine Webseite aufruft?

In allen Tutorials werden immer unzählige Terminal commands ausgeführt und ich bin mir nicht sicher, was dort genau eingerichtet wird.

LG
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Sirius3
User
Beiträge: 18330
Registriert: Sonntag 21. Oktober 2012, 17:20

Welche konkrete Frage hast du? Mit welchem Framework arbeitest du? Im Terminal wird eigentlich immer nur das Pythonprogramm aufgerufen, das den Server startet.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Flask oder Django. Grundlegend müsste das doch genau so funktionieren wie z.B. in Ruby on Rails, oder?

Konkrete Fragen kann ich nichtmal formulieren, weil ich zu unwissend bin :D
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Sirius3
User
Beiträge: 18330
Registriert: Sonntag 21. Oktober 2012, 17:20

Dann arbeite erst mal das Tutorial von Flask und/oder Django durch.
Wenn dann konkrete Fragen da sind, kannst du sie ja hier stellen.
nezzcarth
User
Beiträge: 1788
Registriert: Samstag 16. April 2011, 12:47

naheliegend hat geschrieben: Samstag 3. Oktober 2020, 09:33 Könnte jemand in wenigen Schritten erklären, was ich tun muss, damit ich quasi code schreiben kann, der dann local bei mir im Browser eine Webseite aufruft?
Ich habe Schwierigkeiten, deine Frage zu verstehen. "lokaler Code, der dann eine Website aufruft" klingt im ersten Moment so, als würdest zum Beispiel von Python aus Wikipedia in deinem Firefox öffnen wollen. Das hat aber mit Webanwendungen nichts zu tun und ist daher wohl nicht, was du meinst.

Die Sache bei Webentwicklung ist, dass man (Grund)kenntnisse in mehreren Technologien braucht. Insofern liegt es in der Natur der Sache, dass dir das kompliziert vorkommt. Man sollte ganz grob verstehen, wie das HTTP-Protokoll funktioniert, man braucht HTML und heute meist auch CSS, JavaScript, server-seitige Programmiersprachen, etc. Falls dir diese Grundkenntnisse noch fehlen, empfehle ich die Ressourcen des Mozilla Developer Network: https://developer.mozilla.org/en-US/docs/Learn. Da findest du, wenn du ausreichend Zeit mitbringst, alles, was du brauchst, inkl. einem Django Tutorial.
Benutzeravatar
noisefloor
User
Beiträge: 4250
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Flask oder Django.
Das ist aber ein ziemlicher Unterschied. Eine minimale Flask App bekommst du mit < 10 Zeilen Code in einer Datei hin, bei Django musst du erst das Projekt und dann die App anlegen und dann noch ein paar Dateien editieren.

Ist aber auch in der Flask Doku und im Django Tutorial erklärt...

Gruß, noisefloor
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
return 'Hello World!'


if __name__ == '__main__':
app.run(port=1337, debug=True)



---

Warum gibt er mir nicht Port 1337, sondern geht immer noch auf 5000?

* Serving Flask app "app.py"
* Environment: development
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
sparrow
User
Beiträge: 4591
Registriert: Freitag 17. April 2009, 10:28

143 Beiträge und noch kein Code in Code-Tags? Bitte verwende die doch, im Code zu posten, damit die Einrückung erhalten bleibt.

Dein Code funktioniert und startet mit folgender Ausgabe:

Code: Alles auswählen

* Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 271-344-867
 * Running on http://127.0.0.1:1337/ (Press CTRL+C to quit)

Code: Alles auswählen

>>> import flask
>>> flask.__version__
'1.1.2'
Benutzeravatar
__blackjack__
User
Beiträge: 14238
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@naheliegend: Aus dem gleichen Grund warum da „Debug mode: off“ steht: Du führst das Modul ganz offensichtlich nicht als Programm aus und deshalb wird auch die letzte Zeile nicht ausgeführt.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
nezzcarth
User
Beiträge: 1788
Registriert: Samstag 16. April 2011, 12:47

Ich gehen davon aus, dass du die Anwendung wie hier beschrieben startest: https://flask.palletsprojects.com/en/1. ... pplication. In dem Fall werden, wie schon von __blackjack__ angemerkt, die beiden unteren Zeilen nicht ausgeführt, weil __name__ den Modulnamen und nicht __main__ enthält. Starte entweder dein Skript direkt oder strukturier deinen Code um.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

__blackjack__ hat geschrieben: Samstag 3. Oktober 2020, 19:16 @naheliegend: Aus dem gleichen Grund warum da „Debug mode: off“ steht: Du führst das Modul ganz offensichtlich nicht als Programm aus und deshalb wird auch die letzte Zeile nicht ausgeführt.
Was für ein Modul?
Was heißt als Programm ausführen? Was passiert denn, wenn ich auf "run" drücke in meiner IDE?
Warum wird die letzte Zeile nicht ausgeführt?
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
__blackjack__
User
Beiträge: 14238
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@naheliegend: Das Modul das Du da geschrieben hast. Als Programm ausführen meint das Modul ausführen. Also so dass das als Programm von Python interpretiert wird.

Was bei "run" in Deiner IDE passiert kommt auf die IDE an. Da können sehr verschiedene Dinge passieren. Von: das Modul wird tatsächlich als Programm ausgeführt, über das Modul wird irgendwie im Kontext der IDE ausgeführt, bei manchen sogar immer im selben Namensraum, so das die Programmläufe nicht mehr unabhängig sind, bis hin zu völlig anderen Sachen, beispielsweise das die IDE bei Webanwendungen die entsprechenden Startprogramme der Webrahmenwerke aufrufen.

IDEs sind kacke. Um das mal überspitzt zu formulieren. 😉

@nezzcarth: Umstrukturieren meint wohl einfach nur das löschen der letzten beiden Zeilen. Denn wenn man es mit ``flask run`` startet, kann man den Port und die Debug-Option dort einfach als Optionen übergeben.
“Ich bin für die Todesstrafe. Wer schreckliche Dinge getan hat, muss eine angemessene Strafe bekommen. So lernt er seine Lektion für das nächste Mal.” — Britney Spears, Interview in der französischen Zeitung Libération, 2. April 2002
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

oooookey. Dann würde mich mal interessieren, wie ihr das macht?

Benutze PyCharm und das haben viele empfohlen und bin nun etwas verwirrt.

wenn ich meine app.py als

Code: Alles auswählen

python app.py
im Terminal starte, dann funktioniert alles über Port 1337 etc.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
noisefloor
User
Beiträge: 4250
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Dann würde mich mal interessieren, wie ihr das macht?
Editor und das Programm im Terminal ausführen.

Wenn es - wie erwartet - im Terminal funktioniert, dann weißt du jetzt halt, dass PyCharm da irgendwas anders macht oder in einem anderen Kontext als der Terminal.

Gruß, noisefloor
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Oh man, dann mach ich mich mal auf die Suche nach dem Unterschied.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Sirius3
User
Beiträge: 18330
Registriert: Sonntag 21. Oktober 2012, 17:20

Denn Unterschied hat doch __blackjack__ schon erklärt. Wird wohl irgendeine Option in pycharm sein: ausführen als flask-app oder so.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Danke.

Nochmal eine andere Frage:

Ich würde gerne weiter lernen und mir irgendeine Web-Anwendung schreiben. Eine Einkaufslistenanwendung mit Login oder so. Was braucht es alles dafür? Würde mit Flask die ganze Logik schreiben und bräuchte dann aber noch eine Datenbank, da ja Werte gespeichert werden müssten.
Kann man das alles lokal auf einem Rechner abwickeln? Also Die Datenbank und den Webserver halt auf dem Localhost?
Ist ja alles nur zu Übungszwecken.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Sirius3
User
Beiträge: 18330
Registriert: Sonntag 21. Oktober 2012, 17:20

Für Login gibt es für Flask auch Erweiterungen. Als Datenbank reicht Sqlite. Die Anbindung machst du am besten über sqlalchemy dann ist es egal welches konkrete Datenbanksystem dahintersteckt.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Okey, ich versuche mal mein Glück und werde sicherlich nochmal die ein oder andere Frage demnächst haben. Danke.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
Benutzeravatar
noisefloor
User
Beiträge: 4250
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

je nach dem, was am Ende dabei raus kommen soll, solltest du Django (auch) in Betracht ziehen. Grund: "batteries included" und höhere Integration der Komponenten. Ich hatte damals mit Bottle + SQLAlchemy + Wtforms angefangen, der Umstieg hat (für mich) viele Sachen einfacher gemacht.
Wobei die Lernkurve bei Django am Anfang definitiv steiler ist. Um erst mal zu lernen, wie Webprogrammierung mit Python so grundsätzlich funktioniert, ist Flask oder Bottle definitiv einfacher zum Lernen. Bevor man dann die erste "große" Applikation schreibt sollte man sich über das Framework dann nochmal Gedanken machen.

Gruß, noisefloor
Antworten