首页 > 解决方案 > 从 djangocms 调用烧瓶应用程序

问题描述

我有以下烧瓶应用程序,它从表单中获取 36 个滑块答案并输出一个简单的乘法结果

烧瓶:

from flask import Flask, render_template, request
import pandas as pd
import jinja2

app = Flask(__name__)

@app.route('/quest')
def index():
    # Render the form. Nothing special needs to happen here.
    return render_template('/aboutImgFree.html')


@app.route('/results', methods=['POST'])
def results():
if request.method == 'POST':
    likertValues = {'C1': [request.values['vol1'], request.values['vol2'],request.values['vol3'], request.values['vol4'], 
    request.values['vol5'],request.values['vol6']], 
    'C2': [request.values['vol7'], request.values['vol8'], request.values['vol9'], request.values['vol10'],
     request.values['vol11'], request.values['vol12']],
    'C3': [request.values['vol13'], request.values['vol14'], request.values['vol15'], request.values['vol16']
    , request.values['vol17'], request.values['vol18']],
    'C4': [request.values['vol19'], request.values['vol20'], request.values['vol21'], request.values['vol22']
    , request.values['vol23'], request.values['vol24']],
    'C5': [request.values['vol25'], request.values['vol26'], request.values['vol27'], request.values['vol28']
    , request.values['vol29'], request.values['vol30']],
    'C6': [request.values['vol31'], request.values['vol32'], request.values['vol33'], request.values['vol34']
    , request.values['vol35'], request.values['vol36']]}


    io = pd.DataFrame(data=likertValues)
    io_t = io.astype('int64')

    factor={'factor':[1,2,3,4,5,6]}
    f=pd.DataFrame(data=factor)
    
    #return render_template('/results.html',io=io.to_html(),f=type(f.iloc[-1,-1]))
    ''' 
    io_table=pd.read_csv(request.files['io_table'])

    io_t=io_table
    factor=pd.read_csv(request.files['factor'])
    f=factor
    ''' 
    mdl1=pd.DataFrame(io_t.values+f.values, columns=io_t.columns, index=io_t.columns)
    mdl2=pd.DataFrame(io_t.values*f.values, columns=io_t.columns, index=io_t.columns)
    c_sum1 = mdl1.sum(axis=0)
    r_sum1 = mdl1.sum(axis=1)

    c_sum2 = mdl2.sum(axis=0)
    r_sum2 = mdl2.sum(axis=1)

    mdl1_t=mdl1
    mdl2_t=mdl2
    
    io_t.rename(index={0:'C1',1:'C2',2:'C3',3:'C4',4:'C5',5:'C6'},inplace=True)
    io_t.rename(columns={0:'C1',1:'C2',2:'C3',3:'C4',4:'C5',5:'C6'},inplace=True)

    mdl1_t=mdl1_t.append(c_sum1, ignore_index=True)
    mdl1_t.rename(index={0:'C1',1:'C2',2:'C3',3:'C4',4:'C5',5:'C6',6:'Sum Column'},inplace=True)
                    
    mdl1_t=pd.concat([mdl1_t, r_sum1], axis=1, ignore_index=True)
    mdl1_t.iloc[-1,-1]=mdl1.values.sum()
    mdl1_t.rename(columns={0:'C1',1:'C2',2:'C3',3:'C4',4:'C5',5:'C6',6:'Sum Row'},inplace=True)

    mdl2_t=mdl2_t.append(c_sum2, ignore_index=True)
    mdl2_t.rename(index={0:'C1',1:'C2',2:'C3',3:'C4',4:'C5',5:'C6',6:'Sum Column'},inplace=True)
          
    mdl2_t=pd.concat([mdl2_t, r_sum2], axis=1, ignore_index=True)
    mdl2_t.iloc[-1,-1]=mdl2.values.sum()

    mdl2_t.rename(columns={0:'C1',1:'C2',2:'C3',3:'C4',4:'C5',5:'C6',6:'Sum Row'},inplace=True)

    option = request.form.getlist('model')
    if option == ['mdl1']:                
        return render_template('/results.html', io=io_t.to_html(), mdl1_t=mdl1_t.to_html())
    elif option == ['mdl2']:
        return render_template('/results.html', io=io_t.to_html(), mdl2_t=mdl2_t.to_html())
    elif option == ['mdl1','mdl2']:
        return render_template('/results.html', io=io_t.to_html(), mdl1_t=mdl1_t.to_html(), mdl2_t=mdl2_t.to_html())
    else:
        return render_template('/results.html', io=io_t.to_html())
    #results = new_io_table(io_table,factor) # Get some results
    
if __name__ == "__main__":
    app.run(debug=True)

我想做的是获取该代码并从我的djangocms应用程序中调用它。问题是我在任何地方都找不到答案,也不知道到底要寻找什么。这里有没有人做过类似的事情?

我正在使用 django 3.x 和烧瓶 1.1.2

更新

我发现了调度,这真的很棒,但我不能让它正常工作。

from flask import Flask
from werkzeug.middleware.dispatcher import DispatcherMiddleware
from werkzeug.exceptions import NotFound

from app1.website2 import app as app1
from app2 import app as app2

app = Flask(__name__)

app.wsgi_app = DispatcherMiddleware(NotFound(), {
    "/app1": app1,
    "/quest": app2
})

if __name__ == "__main__":
    app.run()

我收到以下错误

Traceback (most recent call last):
  File "C:\Users\user\Desktop\CMS\Lib\site-packages\werkzeug\serving.py", line 323, in run_wsgi
    execute(self.server.app)
  File "C:\Users\user\Desktop\CMS\Lib\site-packages\werkzeug\serving.py", line 312, in execute
    application_iter = app(environ, start_response)
  File "C:\Users\user\Desktop\CMS\Lib\site-packages\flask\app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\user\Desktop\CMS\Lib\site-packages\werkzeug\middleware\dispatcher.py", line 66, in __call__
    return app(environ, start_response)
TypeError: 'module' object is not callable

标签: pythonflaskdjango-cms

解决方案


推荐阅读