[英]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
文件中的Network
、 Segment
和Node
类。
这是我不断收到的错误页面。
这是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.