将Django模型类导入Plotly-Dash无状态应用程序中

11 浏览
0 Comments

将Django模型类导入Plotly-Dash无状态应用程序中

我正在尝试使用django-plotly-dash构建一个仪表盘应用。当从一个.CSV文件中提取数据时,我能够使应用程序正常运行,但速度较慢。为了加快速度,我将数据导入到后端的Postgresql服务器中,并在我的Django项目的pages应用程序中创建了一个模型。问题出现在当我尝试从模型中导入特定的表格到不同文件夹中的无状态DjangoDash应用程序时。我一直收到的错误是"无法导入pages.models"。

文件夹结构:

DjangoProject

>dash_apps

>finished_apps

-appOne.py

>pages

-__init__.py

-admin.py

-apps.py

-models.py

-test.py

>base

-__init__.py

-asgi.py

-routing.py

-settings.py

-urls.py

-wsgi.py

>templates

>pages

-index.html

-manage.py

该应用程序名为"appOne.py",表格或类位于"models.py"文件中,名为"general_finance_metrics"。

到目前为止,我在"appOne.py"文件中尝试了以下方法,但都没有成功:

from pages.models import general_finance_metrics (错误: 无法导入'pages.models' pylint (import-error))

from DjangoProject.pages.models import general_finance_metrics (错误: 无法导入'DjangoProject.pages.models' pylint (import-error))

from .models import general_finance_metrics (错误: 尝试相对导入超出顶级包 pylint (relative-beyond-top-level))

from base.models import general_finance_metrics (错误: 无法导入'base.models' pylint (import-error))

from base import models (错误: 无法导入'base' pylint (import-error))

from pages import models (错误: 无法导入'pages' pylint (import-error))

我查阅了这些其他问题,但没有找到有效的答案,除非我忽略了它,但我相信我的情况与这些问题不同,因为DASH应用程序不在单个应用程序中,而是在DjangoProject中。

appOne.py 代码:

import numpy as np

import pandas as pd

import datetime

import dash_core_components as dcc

import dash_html_components as html

from dash.dependencies import Input, Output

import plotly.graph_objs as go

from django_plotly_dash import DjangoDash

from django.db import models

from pages.models import general_finance_metrics # 错误发生在这里

df = pd.DataFrame(general_finance_metrics.objects.all().values())

models.py 代码:

class general_finance_metrics(models.Model):

columnOne = models.TextField(blank=True, null=True)

columnTwo = models.TextField(blank=True, null=True)

columnThree = models.TextField(blank=True, null=True)

def __str__(self):

return self.columnOne

admin.py 代码:

from django.contrib import admin

from .models import general_finance_metrics

urls.py 代码:

from django.urls import path

from dash_apps.finished_apps import appOne

from . import views

urlpatterns = [

path('', views.index, name='index'),

]

index.html 代码:

{% load plotly_dash %}

{% plotly_app name='appOne' ratio=0.95 %}

0
0 Comments

问题:无法将Django模型类导入到Plotly-Dash无状态应用程序中

原因:需要确保appOne.py文件可以被views.py(以及使用它的任何其他文件)导入。较旧版本的Python需要在dash_appsfinished_apps文件夹中都有__init__.py文件。

解决方法:一旦可以导入appOne.py,在其中添加类似于from pages.models import general_finance_metrics的语句即可。

0
0 Comments

问题的原因是在使用django-plotly-dash包时,无法从Django模型导入数据到dash应用程序中,只能从.csv文件中获取数据。作者希望能够通过Django模型从Postgres服务器中获取数据,但是目前的方法导致dash应用程序在每次刷新页面时都要重新加载csv文件,导致速度非常慢。

解决方法是调查为什么无法在dash应用程序中使用ORM。这是django-plotly-dash存在的主要原因之一。Dash回调是在Django视图内调用的,因此您应该能够使用类似于MyModel.objects.filter(things_derived_from_callback_arguments)的语句。

另外,检查一下appOne.py文件是如何被Django导入的。在urls.py文件中使用from dash_apps.finished_apps import appOne进行导入,并在HTML的主体中调用它。

同时,作者还尝试了在urls.py文件中导入其他文件,发现可以成功导入pages.models,但是dash_apps文件夹位于pages文件夹的外部。

最后,作者尝试在dash_apps文件夹和finished_apps文件夹中分别添加了一个__init__.py文件,发现在两者都没有__init__.py文件时会出现上述错误。

根据以上信息,可以得出解决方法为:调查为什么无法在dash应用程序中使用ORM,并确保dash_apps文件夹和finished_apps文件夹中都添加了__init__.py文件。

至此,问题的原因和解决方法已经整理完毕。

0