编写flask web开发实战第7章bluelog项目时在skeleton标签出现jinja2.exceptions.TemplateNotFound问题

报错信息如下:

# jinja2.exceptions.TemplateNotFound

jinja2.exceptions.TemplateNotFound: blog/index.html

## Traceback  *(most recent call last)*

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\app.py", line  *2464* , in  `__call__`

return self.wsgi_app(environ, start_response)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\app.py", line  *2450* , in  `wsgi_app`

response = self.handle_exception(e)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\app.py", line  *1867* , in  `handle_exception`

reraise(exc_type, exc_value, tb)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\_compat.py", line  *39* , in  `reraise`

raise value

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\app.py", line  *2447* , in  `wsgi_app`

response = self.full_dispatch_request()

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\app.py", line  *1952* , in  `full_dispatch_request`

rv = self.handle_user_exception(e)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\app.py", line  *1821* , in  `handle_user_exception`

reraise(exc_type, exc_value, tb)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\_compat.py", line  *39* , in  `reraise`

raise value

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\app.py", line  *1950* , in  `full_dispatch_request`

rv = self.dispatch_request()

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\app.py", line  *1936* , in  `dispatch_request`

return self.view_functions[rule.endpoint](**req.view_args)

* #### File "E:\Trainning\bluelog\bluelog\blueprints\blog.py", line  *8* , in  `index`

return render_template('blog/index.html')

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\templating.py", line  *138* , in  `render_template`

ctx.app.jinja_env.get_or_select_template(template_name_or_list),

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\jinja2\environment.py", line  *930* , in  `get_or_select_template`

return self.get_template(template_name_or_list, parent, globals)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\jinja2\environment.py", line  *883* , in  `get_template`

return self._load_template(name, self.make_globals(globals))

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\jinja2\environment.py", line  *857* , in  `_load_template`

template = self.loader.load(self, name, globals)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\jinja2\loaders.py", line  *115* , in  `load`

source, filename, uptodate = self.get_source(environment, name)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\templating.py", line  *60* , in  `get_source`

return self._get_source_fast(environment, template)

* #### File "C:\Users\Administrator\.virtualenvs\bluelog-CREqRzsw\lib\site-packages\flask\templating.py", line  *89* , in  `_get_source_fast`

raise TemplateNotFound(template)

> jinja2.exceptions.TemplateNotFound: blog/index.html

描述:不仅是blog/index.html找不到,错误处理400,404,500也都出现找不到现象

文件结构和blog.py文件如上

尝试:在网上查找过改变templates目录位置,但没有解决该问题。
猜想:如报错所说,就是简单的找不到模板,应该不会是很复杂的技术问题,但就是解决不了。另外有直接checkout skeleton标签运行,也是这个报错。由于初学对falsk的执行流程不熟悉,在想会不会是环境问题,暂时找不到解决办法。

我在本地试了一下,签出 skeleton 标签运行没有报错哎。你的代码有放到 GitHub 吗?有的话可以贴一下地址。

另外需要提供一下启动程序的命令和当前工作目录。

代码没有push到远程
不过我感觉大概率是我运行环境问题了,因为用pycharm运行flask,然后又使用venv,pipenv弄得我有点稀里糊涂 :rofl:
以下是启动程序的命令

临时push了一下,地址:

你的工作目录填错了,工作目录指的是项目根目录(/bluelog),不是包目录(/bluelog/bluelog)。把下面那一行改成 E:\Trainning\bluelog 就可以了。

image

1 个赞

工作目录已经更改过来了,但是问题还没有消失,报一样的错
不过还是发现了一个新错误,之前每次填工作目录都稀里糊涂 :disappointed_relieved:

看一下你启动的完整命令和输出(终端界面)。

是这个不,我是直接用pycharm启动的

工作目录现在是对的,代码没看出有什么问题。或许可以试一下重启电脑……

好~