Получение 500 внутренних ошибок сервера даже с исправлениями, как рекомендуется в паре похожих вопросов - PullRequest
0 голосов
/ 15 февраля 2020

У меня такая же проблема, как описано в этих двух вопросах / ответах:

Python WSGI + Flask render_template - 500 Внутренняя ошибка сервера?

Получение 500 внутренних ошибок сервера с использованием render_template и Flask

, и я сузил это до следующего:

Вот структура файла:

../project/
    project.py
    templates/
        about.html

Я все еще получаю эту ошибку (сокращенно):


● project.service - Gunicorn instance to serve project
   Loaded: loaded (/etc/systemd/system/project.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2020-02-15 06:28:46 UTC; 3min 28s ago
 Main PID: 3942 (gunicorn)
    Tasks: 4 (limit: 1151)
   CGroup: /system.slice/project.service
           ├─3942 /home/dev/project/project_env/bin/python3.6 /home/dev/project/project_env/bin/gunicorn --workers 3 --bind unix:project.sock -m 007 wsgi
           ├─3967 /home/dev/project/project_env/bin/python3.6 /home/dev/project/project_env/bin/gunicorn --workers 3 --bind unix:project.sock -m 007 wsgi
           ├─3968 /home/dev/project/project_env/bin/python3.6 /home/dev/project/project_env/bin/gunicorn --workers 3 --bind unix:project.sock -m 007 wsgi
           └─3969 /home/dev/project/project_env/bin/python3.6 /home/dev/project/project_env/bin/gunicorn --workers 3 --bind unix:project.sock -m 007 wsgi

Feb 15 06:29:17 project gunicorn[3942]:     return self._load_template(name, self.make_globals(globals))
Feb 15 06:29:17 project gunicorn[3942]:   File "/home/dev/project/project_env/lib/python3.6/site-packages/jinja2/environment.py", line 857, in _load_template
Feb 15 06:29:17 project gunicorn[3942]:     template = self.loader.load(self, name, globals)
Feb 15 06:29:17 project gunicorn[3942]:   File "/home/dev/project/project_env/lib/python3.6/site-packages/jinja2/loaders.py", line 117, in load
Feb 15 06:29:17 project gunicorn[3942]:     source, filename, uptodate = self.get_source(environment, name)
Feb 15 06:29:17 project gunicorn[3942]:   File "/home/dev/project/project_env/lib/python3.6/site-packages/flask/templating.py", line 60, in get_source
Feb 15 06:29:17 project gunicorn[3942]:     return self._get_source_fast(environment, template)
Feb 15 06:29:17 project gunicorn[3942]:   File "/home/dev/project/project_env/lib/python3.6/site-packages/flask/templating.py", line 89, in _get_source_fast
Feb 15 06:29:17 project gunicorn[3942]:     raise TemplateNotFound(template)
Feb 15 06:29:17 project gunicorn[3942]: jinja2.exceptions.TemplateNotFound: about.html

Итак, насколько я могу судить, проблема в том, что последняя строка

Feb 15 06:29:17 project gunicorn[3942]: jinja2.exceptions.TemplateNotFound: about.html

Я не знаю не понимаю, почему, хотя файлы / папки есть. Самое близкое, что я мог найти, это комментарий:

{ ссылка }

ENV = jinja2.Environment(loader=jinja2.FileSystemLoader(str(root_path / 'templates')))
template = ENV.get_template(your_template_name)

Но если я добавлю строки "ENV = ..." в мой проект. Пи файл, затем Gunicorn жалуется и не может начать процесс.

1 Ответ

1 голос
/ 15 февраля 2020

Существуют различные способы визуализации HTML в Flask. Вы можете просто сгенерировать HTML непосредственно из кода Python, аналогично тому, что вы сделали для маршрута home, или вы можете использовать язык шаблонов, такой как Jinja.

То, что вы написали в about маршрут - это функция render_template. render_template работает, читая файл HTML с именем, которое вы передаете в качестве параметра, и отображает этот шаблон. В вашем случае вы вызвали метод render_template и попросили его отобразить шаблон с именем about.html, но поскольку шаблон не существует, он не загружается и выдает исключение.

Создайте about.html файл на том же уровне, что и ваш файл app.py, введите в него что-нибудь и попробуйте отрендерить Это должно работать.

Чтобы узнать больше о render_template, ознакомьтесь с документацией здесь или прочитайте руководство по началу работы для Flask здесь

...