Render_template führt zum Internal Server Error

Django, Flask, Bottle, WSGI, CGI…
Antworten
spyder3luke
User
Beiträge: 11
Registriert: Montag 8. April 2019, 15:12

Ich habe dieses und dieses Beispiel bei mir aus propiert und während Flask allgemein zu funktioniert scheint (zum Beispiel wenn ich beim zweiten Beispiel http://127.0.0.1:5000/api/calc?a=48&b=4 bekomme ich den richtigen JSON-Angezeigt), wenn ich die Seite mit der HTML-Einbundung aufrufe (also nur http://127.0.0.1:5000/) sehe ich nur Internal Server Error. Ich habe nichts am Beispielcode verändert, was mache ich falsch? :?:
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Zeig uns, was das Logfile/die Konsole sagen. Das sollte Aufschluss geben.
spyder3luke
User
Beiträge: 11
Registriert: Montag 8. April 2019, 15:12

__deets__ hat geschrieben: Montag 8. April 2019, 15:48 Zeig uns, was das Logfile/die Konsole sagen. Das sollte Aufschluss geben.
Ok auf der Console sehe ich folgendes:

Code: Alles auswählen

flask run
 * Environment: production
   WARNING: Do not use the development server in a production environment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [08/Apr/2019 16:54:59] "GET /get-log/policy?_=1554716861314 HTTP/1.1" 404 -
127.0.0.1 - - [08/Apr/2019 16:54:59] "GET /get-log/trace?_=1554716861315 HTTP/1.1" 404 -
Und die letzten beiden Zeilen werden mit upgedater Uhrzeit die ganze Zeit während es läuft erzeugt. Was heißt das?
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das da irgendjemand bestaendig auf deinen Server zugreift, von lokal aus. Und das auf eine URL, die es nicht gibt.
spyder3luke
User
Beiträge: 11
Registriert: Montag 8. April 2019, 15:12

__deets__ hat geschrieben: Montag 8. April 2019, 16:06 Das da irgendjemand bestaendig auf deinen Server zugreift, von lokal aus. Und das auf eine URL, die es nicht gibt.
Das muss ein anderes Programm sein das im Hindergrund läuft ist nämlich nur mein Privat-PC. Wie forsche ich es aus? Auch beantwortet es nicht die frage warum /api/calc?a=4&b=1 klappt aber die Hauptroute obwohl sie auch im Pytoncode steht nicht.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hm, ich hab's mal gegoogelt, das einize das ich fand war https://www.codetd.com/article/4204843 - und das suggeriert, das flask das selbst irgendwie macht.

Und was das andere Problem angeht - na wenn du einen 500er bekommst, dann muss der da ja auch angezeigt werden. Wenn dem nicht so ist, wer beantwortet denn sonst deine Anfragen? Hast du noch einen anderen Server laufen?
spyder3luke
User
Beiträge: 11
Registriert: Montag 8. April 2019, 15:12

__deets__ hat geschrieben: Montag 8. April 2019, 16:36 Hm, ich hab's mal gegoogelt, das einize das ich fand war https://www.codetd.com/article/4204843 - und das suggeriert, das flask das selbst irgendwie macht.

Und was das andere Problem angeht - na wenn du einen 500er bekommst, dann muss der da ja auch angezeigt werden. Wenn dem nicht so ist, wer beantwortet denn sonst deine Anfragen? Hast du noch einen anderen Server laufen?
Nein ein anderer Server ist da nicht. Eventuell eine alte Instanz die nicht ganz abgedreht ist. Leider verstehe ich kein Chinesisch. Jetzt habe ich auch eine interessante Fehlermeldung gefunden, die mir vorher in den tausend 404 Meldungen nicht aufgefallen ist, die mehr oder minder sagt, dass das Template nicht gefunden wird was ich nicht verstehe da alles im selben Ordner ist.

Code: Alles auswählen

127.0.0.1 - - [08/Apr/2019 22:39:50] "GET /get-log/policy?_=1554748847956 HTTP/1.1" 404 -
127.0.0.1 - - [08/Apr/2019 22:39:50] "GET /get-log/trace?_=1554748847957 HTTP/1.1" 404 -
[2019-04-08 22:39:50,680] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
  File "c:\python27\lib\site-packages\flask\app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "c:\python27\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "c:\python27\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "c:\python27\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "c:\python27\lib\site-packages\flask\app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\...\flask_example\app.py", line 7, in main
    return render_template('main.html', reload = time.time())
  File "c:\python27\lib\site-packages\flask\templating.py", line 134, in render_template
    return _render(ctx.app.jinja_env.get_or_select_template(template_name_or_list),
  File "c:\python27\lib\site-packages\jinja2\environment.py", line 869, in get_or_select_template
    return self.get_template(template_name_or_list, parent, globals)
  File "c:\python27\lib\site-packages\jinja2\environment.py", line 830, in get_template
    return self._load_template(name, self.make_globals(globals))
  File "c:\python27\lib\site-packages\jinja2\environment.py", line 804, in _load_template
    template = self.loader.load(self, name, globals)
  File "c:\python27\lib\site-packages\jinja2\loaders.py", line 113, in load
    source, filename, uptodate = self.get_source(environment, name)
  File "c:\python27\lib\site-packages\flask\templating.py", line 58, in get_source
    return self._get_source_fast(environment, template)
  File "c:\python27\lib\site-packages\flask\templating.py", line 86, in _get_source_fast
    raise TemplateNotFound(template)
TemplateNotFound: main.html
127.0.0.1 - - [08/Apr/2019 22:39:50] "GET / HTTP/1.1" 500 -
127.0.0.1 - - [08/Apr/2019 22:39:51] "GET /get-log/policy?_=1554748847958 HTTP/1.1" 404 -
127.0.0.1 - - [08/Apr/2019 22:39:51] "GET /get-log/trace?_=1554748847959 HTTP/1.1" 404 -
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Dazu müßte man schon das genaue Programm kennen, und wo Du die Templates gespeichert hast.
spyder3luke
User
Beiträge: 11
Registriert: Montag 8. April 2019, 15:12

Sirius3 hat geschrieben: Montag 8. April 2019, 21:54 Dazu müßte man schon das genaue Programm kennen, und wo Du die Templates gespeichert hast.
Ich dachte das wäre einfach das main.html File ist und Flask alles weitere mitbringt. Muss ich was nach installieren?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Keine Ahnung, was Du denkst. Du machst ja ein Geheimnis draus.
spyder3luke
User
Beiträge: 11
Registriert: Montag 8. April 2019, 15:12

Sirius3 hat geschrieben: Montag 8. April 2019, 22:23 Keine Ahnung, was Du denkst. Du machst ja ein Geheimnis draus.
Ich hatte eigentlich den Eindruck alle nötigen Informationen offen zulegen. Ich habe die Files so wie im verlinkten Beispiel beschrieben in meinen System, aus einem mir nicht erklärlichen Grund gibt es die Fehlermeldung Template not found (siehe den genauen Fehlercode in meiner vorherigen Antwort). Ich habe das Template halt für die im Ordner befindliche main.html-Datei oder eine Flaskkomponente gehalten habe, aber offenbar ist das falsch, was fehlt da?
Das ist die dir Ausgabe vom Ordner wo das Beispiel bei mir gespeichert ist:

Code: Alles auswählen

\flask_example

08.04.2019  22:39    <DIR>          .
08.04.2019  22:39    <DIR>          ..
08.04.2019  22:38               778 app.py
08.04.2019  22:39             1.702 app.pyc
08.04.2019  00:14               447 main.html
08.04.2019  00:13             1.018 math.js
08.04.2019  12:48    <DIR>          __pycache__
               4 Datei(en),          3.945 Bytes
               3 Verzeichnis(se), 472.968.036.352 Bytes frei
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Dann schau nochmal nach, wo die Dateien im Beispiel abgelegt sind.
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

hast du schon mal zumindest die grundlegenden Sachen in der Flask Doku gelesen? Wenn nein -> solltest du, weil die Flask Doku sehr gut ist.

Flask erwartet die Templates per Default in einem eigenen Verzeichnis - und das ist halt nicht das Verzeichnis, wo die Python-Dateien liegen. Dass das Mathe-Beispiel funktioniert liegt schlicht daran, dass da kein Template im Spiel ist.

Was anderes: du verwendest noch Python 2 - das ist Ende diesen Jahres EOL und ohne Support. Also nutz' am besten direkt Python 3.

Gruß, noisefloor
Antworten