Python 烧瓶不';使用twisted运行时找不到模板目录

Python 烧瓶不';使用twisted运行时找不到模板目录,python,templates,twisted,flask,Python,Templates,Twisted,Flask,根据我发现的一些建议,我正在尝试将Flask用作运行twisted的应用程序的web界面 正如Flask文档中所建议的,我创建了一个“templates”目录,该目录与我的脚本处于同一级别,但当我启动服务器时,出现以下错误: 内部服务器错误 服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序中存在错误 当我不尝试加载模板而只是在请求中写入字符串时,它就可以正常工作。这就是为什么我认为它与模板的负载有关 from twisted.internet import reactor from t

根据我发现的一些建议,我正在尝试将Flask用作运行twisted的应用程序的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()

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

自0.7以来,Flask支持在调用Flask时传递模板\文件夹关键字参数,因此您可以尝试:

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)

您可以为Jinja2提供默认的
模板
目录(如所述),如下所示:

import jinja2

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

我忘了说我是在windows下用Python2.7运行脚本的。当您在Twisted中时,您是否验证了当前工作目录是什么?听起来可能不是您所期望的。您好,我确实需要检查当前目录,但您知道它存储在哪个变量中吗?os.getcwd()将它作为字符串提供给您。