Подтвердить что ты не робот

Flask не находит каталог шаблонов при работе с скрученными

Следуя советам, которые я нашел здесь, я пытаюсь использовать Flask в качестве веб-интерфейса для приложения, которое работает со скрученными.

Как было предложено в документации Flask, я создал каталог "шаблонов", который находится на том же уровне, что и мой script, но когда я запускаю сервер, я получаю следующую ошибку:

Внутренняя ошибка сервера

Сервер обнаружил внутреннюю ошибку и не смог выполнить ваш запрос. Либо сервер перегружен, либо есть ошибка в приложении.

Когда я не пытаюсь загрузить шаблон и просто написать строку в запросе, он отлично работает. Именно это заставляет меня думать, что это связано с загрузкой шаблона.

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()
4b9b3361

Ответ 1

Некоторые фреймворки изменят каталог из вашего текущего рабочего каталога, когда они будут запущены в режиме демона, и это может быть очень хорошо.

Флажок, начиная с 0.7, поддерживал передачу аргумента ключевого слова template_folder при вызове Flask, поэтому вы можете попробовать:

import os
tmpl_dir = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates')
# ...
app = Flask('myapp', template_folder=tmpl_dir)

Ответ 2

Вы можете передать Jinja2 по умолчанию templates (как написано здесь) следующим образом:

import jinja2

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