2017-10-19 5 views
0

L'image réalisée n'est pas montrée en html. j'ai écrit dans views.pyL'image réalisée n'est pas montrée en html

@login_required 
def view_plot(request): 
    left = np.array([1, 2, 3, 4, 5]) 
    height = np.array([100, 200, 300, 400, 500]) 
    plt.bar(left, height) 
    filename = "output.png" 
    save_fig=plt.savefig(filename) 
    response = HttpResponse(content_type="image/png") 
    save_fig.save(response, "PNG") 
    return save_fig 

en html

<body> 
    <img src='/accounts/view_plot' width=300 height=300> 
    </body> 

dans urls.py

urlpatterns = [ 
    url(r'^view_plot$', views.view_plot,name='view_plot'), 
] 

Mais maintenant, la page web est comme enter image description here

l'image est fissurée montré.

Je ne sais pas pourquoi cette erreur se produit. Dans l'application Django, output.png est enregistré. Je doute que l'image n'est pas faite dans view_plot.Mais je ne peux pas savoir si oui ou non. Quel est le problème dans mon code? Comment résoudre ce problème?

+0

Il ne s'agit pas d'une solution directe, mais vous pouvez essayer d'afficher l'image sous la forme d'une baie de base64 afin de ne pas encombrer un serveur de fichiers image ... Voici un exemple de mes questions] (https://stackoverflow.com/q/31719138/1324033) – Sayse

Répondre

0

Assurez-vous que votre fichier STATIC_URL: '/ static /' est défini dans settings.py. Ensuite, vos fichiers statiques comme les images doivent être dans

-MyProject 
--Static 
---css 
---js 
---img 
----all images 

Puis dans votre modèle html.

{% load static %} 
<body> 
<img src="{% static "my_app/example.jpg" %}" alt="My image"/> 
</body> 

Vérifiez les Django documentation pour les fichiers statiques info.