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