Flask扭曲运行时找不到模板目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask扭曲运行时找不到模板目录相关的知识,希望对你有一定的参考价值。

遵循一些我发现的建议here,我试图将Flask用作运行扭曲的应用程序的Web界面。

根据Flask文档中的建议,我创建了一个“ templates”目录,该目录与我的脚本处于同一级别,但是当我启动服务器时,出现以下错误:

内部服务器错误

服务器遇到内部错误,无法完成您的请求。服务器超载或应用程序中有错误。

[当我不尝试加载模板而仅在请求中写入字符串时,它可以正常工作。这就是让我认为它与模板的负载有关的原因。

from twisted.internet import reactor
from twisted.web.resource import Resource
from twisted.web.wsgi import WSGIResource
from twisted.internet.threads import deferToThread
from twisted.web.server import Site, NOT_DONE_YET

from flask import Flask, request, session, redirect, url_for, abort,  
render_template, flash

app= Flask(__name__)
app.config.from_object(__name__)

@app.route('/login', methods= ['GET', 'POST'])
def login():
    return render_template('login.html', error= error)

if __name__ == '__main__':
    root = WSGIResource(reactor, reactor.getThreadPool(), app)
    factory = Site(root)
    reactor.listenTCP(8880, factory)
    reactor.run()
答案

某些框架在守护程序模式下运行时,将从当前工作目录更改目录,在这里很可能是这种情况。

Flask从0.7开始,支持在调用Flask时传递template_folder关键字参数,因此您可以尝试:

import os
tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')

以下是一个较短的版本,将可以正常使用:

tmpl_dir = os.path.join(os.path.dirname(__file__), 'templates)
# ...
app = Flask('myapp', template_folder=tmpl_dir)
另一答案

您可以使用以下默认的templates目录(写为here)为Jinja2供稿:

import jinja2

app = Flask(__name__)
app.jinja_loader = jinja2.FileSystemLoader('path/to/templates/directory')

以上是关于Flask扭曲运行时找不到模板目录的主要内容,如果未能解决你的问题,请参考以下文章

Couchapp - 在 Windows 上运行“couchapp generate ...”时找不到默认模板

使用pyenv和virtualenv在apache后面部署flask应用程序时找不到numpy,pandas模块

当我在 pydriod 3 应用程序上运行 python manage.py runserver 时找不到模板

我在 django 模板中显示数据库数据时找不到错误

IDEA 高版本(2020.3 以上) lombok 不报错,但是编译时找不到符号问题解决, lombok 无法运行

UnhandledPromiseRejectionWarning:错误:当我尝试运行我的代码时找不到模块'../database/db'