Превратил код Flask в пакет и получил ошибку TemplotNotFound - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь превратить свой код Flask в структуру пакета python, но теперь, когда я это сделал, когда я пытаюсь запустить код, ни один из шаблонов HTML не найден.

Вот упрощенная структура моей текущей упаковки для колб.run.py - это то, что я использую для выполнения кода Flask.routes.py содержит все мои @app.routes, где называются шаблоны HTML.

pipeline-ui/
   run.py
   pipeline_app/
       __init__.py
       routes.py
       models.py
       forms.py
       templates/
          pipeline-alt.html

Полученное сообщение об ошибке: TemplateNotFound: pipeline-alt.html

init.py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager


app = Flask('__name__')
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'
login_manager.login_message_category = 'info'

from pipeline_app import routes

run.py:

from pipeline_app import app 

if __name__ == '__main__':
    app.run(debug=True)

rout.py:

from flask import url_for, render_template, request, flash, redirect
from pipeline_app import app
from pipeline_app.forms import InputForm, RegistrationForm, LoginForm
from pipeline_app.models import User, Post
from flask_login import login_user, current_user, logout_user, login_required
from math import ceil
import json
import subprocess
import os
import sys
from pprint import pprint

@app.route('/', methods=['GET', 'POST'])
def pipeline(): 
    form = InputForm(request.form)

    if request.method == 'POST':
        if form.validate_on_submit():
            STACK_NAME = request.form['stack_name']

            # Store data in database for future use

            db.create_all()
            db_inputs = Post(stack_name=STACK_NAME)
            db.session.add(db_inputs)
            db.session.commit()

    return render_template('pipeline-alt.html', 
                            title='Pipeline Input', 
                            form=form,
                            STACK_NAME=STACK_NAME)

1 Ответ

0 голосов
/ 25 сентября 2018

Измените app = Flask('__name__') на app = Flask(__name__).Flask использует этот параметр для поиска ресурсов в файловой системе, поэтому, если он настроен неправильно, он не сможет найти ваши шаблоны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...