【问题标题】:ImportError when trying to embed a Bokeh plot alongside a Django upload button尝试在 Django 上传按钮旁边嵌入散景图时出现 ImportError
【发布时间】: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})

【问题讨论】:

  • 我很困惑。我的问题怎么不是现有的编程问题?
  • 不是编程问题,这里没有问题要解决,你找人给你写代码
  • 我的问题真的和这个有很大不同吗? stackoverflow.com/questions/5871730/… 编辑:如果有帮助,请更新标题
  • 这个问题大约有 4 年的历史了,从那时起整个社区都发生了变化,如果它让你感觉好些,我也投票决定关闭那个问题。
  • 删除了我的评论,感谢您改进您的问题。

标签: python django bokeh


【解决方案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,但我无法解释原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-26
    • 2018-04-01
    • 2013-12-14
    • 2017-11-06
    • 2012-02-16
    • 1970-01-01
    • 2016-09-03
    • 2016-04-26
    相关资源
    最近更新 更多