2017-08-02 7 views
2

は、私は本Matplotlib for Python Developersを読んでいますが、これまでのところDjango WebアプリケーションでMatplotlibプロットをレンダリングするには?

章8節に「matplotlibのDjangoアプリケーションで」の例に従うのに苦労しています、私はコマンド

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'), 
) 

しかし、私はurlpatternsがあり、これは「デフォルト」urls.pyで以来、どのように動作するか表示されませんdjango.conf.urls.urlオブジェクトのLITS:

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にアクセスし、チャープされた正弦波の画像を見ることができるはずです)。

答えて

4

cannot import name patternsによると、これは確かにDjangoのレガシーインターフェイスです。私は次のようにmpldjango/urls.pyを作ることによって、それを「更新」の:

enter image description here

:私は http://localhost:8000/mplimage.pngを参照する場合

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), 
] 

は、今私は、必要に応じてプロットを見ます

関連する問題