如何将自定义类导入Django views.py?

2024-10-02 18:15:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一组python类从我的mdt文件夹导入views.py,但每次我尝试使用localhost运行视图时,都会收到网络类的ModuleNotFoundError。我还知道我的FoliumMap类没有正确导入,因为当我删除返回网络类错误的部分代码时,我无法从FoliumMap类访问函数。我看到了一些关于这方面的问题,并尝试按照他们所说的做,但我仍然得到相同的ModuleNotFoundError,或者它根本找不到文件。我真的很难看到我错过了什么

除了下面的内容,我没有更改Django生成的任何文件,只是为了获取URL&;本地主机正在工作

Here's目前的文件结构,我试图从FoliumMap.py文件中导入FoliumMap类,以及NetworkSegmentNode

Here's我一直得到的错误页面

以下是views.py中的所有代码:

from .mdt.FoliumMap import *
from .mdt.Network import *
import pickle
from django.shortcuts import render
from django.http import HttpResponse

def show_emissions(request):  
    fol = FoliumMap()
    network = pickle.load( open( "*obj filepath*", "rb" ) )
    fol.draw_network(network, metric='emissions')
    fol.add_layers()
    folium.LayerControl(collapsed=False).add_to(fol.map)
    m=fol.get_map()._repr_html_()
    context = {'my_map': m}
    return render(request, 'mdt_webapp/index.html', context)

以下是我的大部分settings.py(我没有真正改变django生成的版本的其余部分):

...
from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent

ALLOWED_HOSTS = []

# Application definition

INSTALLED_APPS = [
    'mdt_webapp',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
...

谢谢你的帮助


Tags: 文件djangofrompyimport网络mapnetwork
2条回答

mdt文件夹中创建__init__.py文件。现在试试

说明: 当创建{{CD1>}文件Python时,将MDT视为一个模块,并且可以导入该模块内的任何文件

这里的mdt目录位于mdt_webapp目录中。您正在尝试导入位于mdt目录中的类。只需卸下盖子。从您的导入或您可以使用完整路径

from mdt_webapp.mdt.FoliumMap import *

但是千万不要在python中盲目导入,这是不推荐的。所以像这样导入您的类

from mdt_webapp.mdt.FoliumMap import FoliumMap
from mdt_webapp.mdt.Network import Network, Segment, Node

相关问题 更多 >