У меня есть несколько маршрутов с функциональными возможностями в * 1031. * Blue print, я построил его на основе Flask -User-starter-app Теперь я нашел очень полезный пример для кнопок загрузки по следующей ссылке Flask -Download-Btn
Моя главная проблема заключается в том, что мне не удалось вписать второй код flask -download-btn в мой исходный код flask blueprint! потому что в этом примере маршруты были основаны на app@route, но в проекте flask он основан на main_blueprint@route.
. Могут ли быть какие-либо изменения, которые я могу внести в код app@route, чтобы соответствовать main_blueprint@route tempalte?
ниже часть моего оригинального main_view.py (Blueprint):
import fnmatch
import os
import pandas as pd
import numpy as np
from flask_table import Table, Col
from flask import Blueprint, redirect, render_template
import dash_core_components as dcc
import dash_html_components as html
import random
from random import sample
import bokeh
....... many other imports
main_blueprint = Blueprint('main',__name__, template_folder='templates')
DEBUG = True
app = Flask(__name__)
excel.init_excel(app)
if __name__ == "__main__":
app.run(debug=True)
# The Home page is accessible to anyone
@main_blueprint.route('/')
def home_page():
return render_template('main/home.html')
# The Home page is accessible to anyone
@main_blueprint.route('/home')
def home3():
return render_template('main/home.html')
и ниже часть app.py (пример кода для download-btn)
# 1. Import download button manager and mixins
from flask_download_btn import CreateFileMixin, DownloadBtnManager, DownloadBtnMixin, HandleFormMixin
from flask import Flask, render_template, session
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
# 2. Initialize download button manager with application and database
download_btn_manager = DownloadBtnManager(app, db=db)
# 3. Create download button model and register it with the manager
@DownloadBtnManager.register
class DownloadBtn(DownloadBtnMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
# 4. Create `CreateFile` and `HandleForm` models
class CreateFile(CreateFileMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
bnt_id = db.Column(db.Integer, db.ForeignKey('download_btn.id'))
class HandleForm(HandleFormMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
bnt_id = db.Column(db.Integer, db.ForeignKey('download_btn.id'))
# 5. Create database tables
db.create_all()
"""Helper methods and download URLs"""
HELLO_WORLD_URL = 'https://test-bucket2357.s3.us-east-2.amazonaws.com/hello_world.txt'
HELLO_MOON_URL = 'https://test-bucket2357.s3.us-east-2.amazonaws.com/hello_moon.txt'
def add_to_session(btn, key):
db.session.add(btn)
db.session.commit()
session[key] = btn.id
def get_btn(key):
if key in session:
return DownloadBtn.query.get(session[key])
@app.before_first_request
def clear_session():
session.clear()
"""Example 1: Basic use"""
@app.route('/basicbtn')
def index():
btn = get_btn('basic')
if not btn:
btn = DownloadBtn()
btn.downloads = [(HELLO_WORLD_URL, 'hello_world.txt')]
add_to_session(btn, 'basic')
return render_template('index.html', download_btn=btn)
Важное примечание: Когда я запускаю> python app.py (он отлично работает) Но когда я запускаю> python manage.py runserver (это для чертежа, который он делает не работает)
Сообщение об ошибке, которое я получил, когда добавил второй пример кода в свой файл чертежа, как показано ниже:
![enter image description here](https://i.stack.imgur.com/Ant6J.png)