Render_template führt zum Internal Server Error
-
- 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?
-
- User
- Beiträge: 11
- Registriert: Montag 8. April 2019, 15:12
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 -
-
- User
- Beiträge: 11
- Registriert: Montag 8. April 2019, 15:12
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.
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?
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?
-
- User
- Beiträge: 11
- Registriert: Montag 8. April 2019, 15:12
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.__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?
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 -
-
- User
- Beiträge: 11
- Registriert: Montag 8. April 2019, 15:12
-
- User
- Beiträge: 11
- Registriert: Montag 8. April 2019, 15:12
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
- noisefloor
- User
- Beiträge: 3856
- 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
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