尝试在 Django 上传按钮旁边嵌入散景图时出现 ImportError
Posted
技术标签:
【中文标题】尝试在 Django 上传按钮旁边嵌入散景图时出现 ImportError【英文标题】:ImportError when trying to embed a Bokeh plot alongside a Django upload button 【发布时间】:2016-04-16 23:53:16 【问题描述】:我正在尝试将散景图嵌入到具有上传按钮的 Django 网站中。我使用here 给出的示例作为起点,然后添加来自here 的嵌入说明。我使用了need-a-minimal-django-file-upload-example/for_django_1.8
,它按预期工作。然后我修改了以下文件,但出现以下错误:
ImportError: 没有名为“myapp”的模块
您可以在这里看到我的目录结构以及修改/添加的三个文件:
如果无法加载图片,请看这里:
.
└── myproject
├── db.sqlite3
├── manage.py
├── media
│ └── documents
│ └── 2016
│ └── 01
│ ├── 12
│ │ └── silico_0_truth_filtered_ptps.csv
│ └── 15
│ └── silico_0_truth_filtered_ptps.csv
└── myproject
├── __init__.py
├── myapp
│ ├── admin.py
│ ├── forms.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── __init__.py
│ │ └── __pycache__
│ │ ├── 0001_initial.cpython-35.pyc
│ │ └── __init__.cpython-35.pyc
│ ├── models.py
│ ├── __pycache__
│ │ ├── admin.cpython-34.pyc
│ │ ├── admin.cpython-35.pyc
│ │ ├── forms.cpython-35.pyc
│ │ ├── __init__.cpython-34.pyc
│ │ ├── __init__.cpython-35.pyc
│ │ ├── models.cpython-34.pyc
│ │ ├── models.cpython-35.pyc
│ │ ├── urls.cpython-35.pyc
│ │ └── views.cpython-35.pyc
│ ├── templates
│ │ ├── list.html
│ │ └── simple_chart.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── __pycache__
│ ├── __init__.cpython-34.pyc
│ ├── __init__.cpython-35.pyc
│ ├── settings.cpython-34.pyc
│ ├── settings.cpython-35.pyc
│ ├── urls.cpython-35.pyc
│ └── wsgi.cpython-35.pyc
├── settings.py
├── urls.py
└── wsgi.py
这里是templates/simple_chart.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Experiment with Bokeh</title>
<script src="http://cdn.bokeh.org/bokeh/release/bokeh-0.8.1.min.js"></script>
<link rel="stylesheet" href="http://cdn.bokeh.org/bokeh/release/bokeh-0.8.1.min.css">
</head>
<body>
the_div|safe
the_script|safe
</body>
</html>
这里是myapp/urls.py
(错误源于这里。我不明白为什么无法解析导入):
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
from myapp.views import simple_chart
urlpatterns = patterns('myproject.myapp.views',
url(r'^list/$', 'list', name='list'),
url(r'^simple_chart/$', simple_chart, name="simple_chart"),
)
这里是myapp/views.py
:
# -*- coding: utf-8 -*-
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from myproject.myapp.models import Document
from myproject.myapp.forms import DocumentForm
from django.shortcuts import render
from bokeh.plotting import figure
from bokeh.resources import CDN
from bokeh.embed import components
def list(request):
# Handle file upload
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile=request.FILES['docfile'])
newdoc.save()
# Redirect to the document list after POST
return HttpResponseRedirect(reverse('myproject.myapp.views.list'))
else:
form = DocumentForm() # A empty, unbound form
# Load documents for the list page
documents = Document.objects.all()
# Render list page with the documents and the form
return render_to_response(
'list.html',
'documents': documents, 'form': form,
context_instance=RequestContext(request)
)
def simple_chart(request):
plot = figure()
plot.circle([1,2], [3,4])
script, div = components(plot, CDN)
return render(request, "simple_chart.html", "the_script":script, "the_div":div)
【问题讨论】:
我很困惑。我的问题怎么不是现有的编程问题? 不是编程问题,这里没有问题要解决,你找人给你写代码 我的问题真的和这个有很大不同吗? ***.com/questions/5871730/… 编辑:如果有帮助,请更新标题 这个问题大约有 4 年的历史了,从那时起整个社区都发生了变化,如果它让你感觉好些,我也投票决定关闭那个问题。 删除了我的评论,感谢您改进您的问题。 【参考方案1】:花了几天时间浏览 Django 教程后,我看到了他们如何在那里导入视图,因此我将 myapp/urls.py
更改为如下:
# -*- coding: utf-8 -*-
from django.conf.urls import patterns, url
from . import views
urlpatterns = patterns('myproject.myapp.views',
url(r'^list/$', 'list', name='list'),
url(r'^simple_chart/$', views.simple_chart, name="simple_chart"),
)
这消除了 ImportError,但我无法解释原因。
【讨论】:
以上是关于尝试在 Django 上传按钮旁边嵌入散景图时出现 ImportError的主要内容,如果未能解决你的问题,请参考以下文章