繁体   English   中英

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

[英]How do you import custom classes into Django views.py?

我正在尝试将一组 python 类从我的 mdt 文件夹导入到views.py中,但是每次我尝试使用本地主机运行视图时,都会收到网络 class 的 ModuleNotFoundError 。 I also know my FoliumMap class is not importing properly as when I remove the part of the code that returns the error for the Network class, I can't access a function from the FoliumMap class. 我已经看到了一些关于此的问题,并尝试按照他们所说的去做,但我仍然得到相同的 ModuleNotFoundError,或者根本找不到文件。 我真的很难看到我错过了什么。

除了下面的内容之外,我没有更改任何 Django 生成的文件,除了让 urls 和 localhost 正常工作。

这是目前的文件结构,我正在尝试将FoliumMap class 导入FoliumMap.py文件中,以及Network.py文件中的NetworkSegmentNode类。

是我不断收到的错误页面。

这是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

...
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',
]
...

谢谢你的帮助。

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

说明:当您创建__init__.py文件 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM