如何将模板导入Flask中template文件夹的子目录中?

时间:2019-04-29 19:34:13

标签: flask jinja2 flask-restful

目前,我有一个基于flask-restful的API项目,带有使用OpenAPI(Swagger)创建的文档页面。我正在尝试创建一个登录页面,基于我的结构jinja2找不到模板的路径。

在登录脚本中,我尝试在render_template()函数中将完整路径传递给.html文件,但没有找到该文件。就像在template_folder = path/to/file中添加参数app=Flask(__name__)一样,我没有成功。

我的结构:

├── app
│   ├── __init__.py
│   ├── auth
│   │   ├── __init__.py
│   │   ├── admin.py
│   │   ├── login.py
│   ├── common
│   │   ├── __init__.py
│   │   ├── jwt.py
│   │   ├── request.py
│   │   └── utils.py
│   ├── models
│   │   ├── __init__.py
│   │   ├── core.py
│   │   └── db_app_2.py
│   ├── routes
│   │   ├── __init__.py
│   │   ├── resources.py
│   └── templates
│       ├── docs
│       │   ├── swagger.json
│       │   └── swagger.yaml
│       └── pages
│           ├── base.html
│           ├── login.html
│           └── signup.html
├── app.db
├── config.py
├── main.py
├── migrations
├── requeriments
└── tests

login.py

# -*- coding: utf-8 -*-

from flask import Blueprint, render_template, redirect, url_for
from app.models.core import db

auth = Blueprint('auth', __name__)


@auth.route('/login')
def login():
    return render_template('login.html')


@auth.route('/signup')
def signup():
    return render_template('signup.html')

__ init __。py(主项目)

from flask import Blueprint, Flask
from flask_login import LoginManager
from flask_migrate import Migrate
from flask_restful import Api

from config import config

from .models.core import db
from .routes.resources import TwoThings


def create_app(config_name):

    app = Flask(__name__, template_folder="/templates/pages")

    app.config.from_object(config[config_name])

    '''Fixed path for routes the api'''
    path_prefix = '/api/v1'

    api_bp = Blueprint(path_prefix, __name__)
    api = Api(api_bp)

    from app.auth.login import auth as auth_blueprint
    app.register_blueprint(auth_blueprint, url_prefix=path_prefix)

    api.add_resource(Reset, f'{path_prefix}/two_things')
    app.register_blueprint(api_bp)

    db.init_app(app)
    Migrate(app, db)

    return app

我需要创建一个登录页面,以供浏览器访问,并在登​​录后重定向到文档端点。

1 个答案:

答案 0 :(得分:0)

尝试:

return render_template('pages/login.html')

在您的login.py