根据我发现here的一些建议,我试图将Flask用作运行扭曲的应用程序的Web界面。
正如Flask文档中所建议的,我创建了一个“模板”目录,该目录与我的脚本处于同一级别,但是当我启动服务器时,我收到以下错误:
内部服务器错误
服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。
当我不尝试加载模板并在请求中写一个字符串时它工作正常。这就是我认为它与模板的负载有关的原因。
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 :(得分:41)
当一些框架在守护进程模式下运行时,它们会从当前工作目录中更改目录,这可能就是这种情况。
Flask,自0.7以来,支持在调用Flask时传递template_folder关键字参数,因此您可以尝试:
import os
tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
# ...
app = Flask('myapp', template_folder=tmpl_dir)
答案 1 :(得分:5)
您可以使用默认的templates
目录(如here所示)向Jinja2提供以下内容:
import jinja2
app = Flask(__name__)
app.jinja_loader = jinja2.FileSystemLoader('path/to/templates/directory')