Использование Flask примеров приложений в Flask шаблоне Blueprint - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть несколько маршрутов с функциональными возможностями в * 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

...