【问题标题】:How to render a Matplotlib plot in a Django web application?如何在 Django Web 应用程序中渲染 Matplotlib 图?
【发布时间】:2017-08-02 11:52:45
【问题描述】:

我正在阅读本书Matplotlib for Python Developers,但我正在努力遵循第 8 章“Django 应用程序中的 Matplotlib”部分中的示例。

到目前为止,我已经发出了命令

django-admin startproject mpldjango

并且,在mpldjango 目录中,

python manage.py startapp mpl

根据示例,在mpldjango/mpl 中,我将views.py 制作如下:

import django
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
import numpy as np

def mplimage(request):
    fig = Figure()
    canvas = FigureCanvas(fig)
    ax = fig.add_subplot(111)
    x = np.arange(-2,1.5,.01)
    y = np.sin(np.exp(2*x))
    ax.plot(x, y)
    response=django.http.HttpResponse(content_type='image/png')
    canvas.print_png(response)
    return response

接下来,书上说mpldjango/urls.py 应该添加这一行:

urlpatterns = patterns('',
       (r'mplimage.png', 'mpl.views.mplimage'),
)

但是,我看不出这是如何工作的,因为在“默认”urls.py 中,urlpatternsdjango.conf.urls.url 对象:

from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]

并且没有定义patterns 构造函数。也许这本书(来自 2009 年)指的是遗留的 Django API?如果是这样,我将如何修改此代码以使其工作? (也就是说,在python manage.py runserver 之后,我应该能够浏览到localhost:8000/mplimage.png 并看到一个啁啾正弦曲线的图像。

【问题讨论】:

    标签: python django matplotlib


    【解决方案1】:

    根据cannot import name patterns,这确实是 Django 的遗留接口。我通过制作mpldjango/urls.py 来“更新”它,如下所示:

    from django.conf.urls import include, url
    from django.contrib import admin
    import mpl.views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'mplimage.png', mpl.views.mplimage),
    ]
    

    现在,如果我浏览到 http://localhost:8000/mplimage.png,我会看到所需的情节:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多