即使按照几个类似问题中的建议进行修复,也会出现 500 Internal Server Error
Getting a 500 Internal Server Error even with fixes as recommended in a couple of similar questions
我遇到了与这两个 questions/answers 中所述相同的问题:
我已经将范围缩小到以下范围:
文件结构如下:
../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
我不明白为什么,尽管有 files/folders。我能找到的最接近的是这条评论:
ENV = jinja2.Environment(loader=jinja2.FileSystemLoader(str(root_path / 'templates')))
template = ENV.get_template(your_template_name)
但是如果我将 "ENV=..." 行添加到我的 project.py 文件中,那么 Gunicorn 会抱怨并且无法启动进程。
Flask 中有不同的呈现方式 HTML。您可以简单地直接从 Python 代码生成 HTML,类似于您为 home
路由所做的,或者您可以使用模板语言,如 Jinja。
你在about
路由中写的是render_template
函数。 render_template
的工作方式是读取一个 HTML 文件,其中包含您作为参数传递的名称并呈现该模板。在你的例子中,你调用了 render_template
方法并要求它呈现一个名为 about.html
的模板,但由于该模板不存在,它无法加载并抛出异常。
在与 app.py 文件相同的级别创建一个 about.html
文件,并在其中输入内容并尝试渲染。它应该有效。
要阅读有关 render_template
的更多信息,请查看文档 here or read the getting started tutorial for Flask here
我遇到了与这两个 questions/answers 中所述相同的问题:
我已经将范围缩小到以下范围:
文件结构如下:
../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
我不明白为什么,尽管有 files/folders。我能找到的最接近的是这条评论:
ENV = jinja2.Environment(loader=jinja2.FileSystemLoader(str(root_path / 'templates')))
template = ENV.get_template(your_template_name)
但是如果我将 "ENV=..." 行添加到我的 project.py 文件中,那么 Gunicorn 会抱怨并且无法启动进程。
Flask 中有不同的呈现方式 HTML。您可以简单地直接从 Python 代码生成 HTML,类似于您为 home
路由所做的,或者您可以使用模板语言,如 Jinja。
你在about
路由中写的是render_template
函数。 render_template
的工作方式是读取一个 HTML 文件,其中包含您作为参数传递的名称并呈现该模板。在你的例子中,你调用了 render_template
方法并要求它呈现一个名为 about.html
的模板,但由于该模板不存在,它无法加载并抛出异常。
在与 app.py 文件相同的级别创建一个 about.html
文件,并在其中输入内容并尝试渲染。它应该有效。
要阅读有关 render_template
的更多信息,请查看文档 here or read the getting started tutorial for Flask here