J'essaie d'écrire une page détaillée pour chaque ligne de données du tableau. Je voudrais générer un graphique matplotlib dynamiquement pour chaque page en utilisant les données de chaque ligne.
J'ai essayé le code avec une vue normale et cela fonctionne. Cependant, lorsqu'il est utilisé avec la vue detail_view
l'image apparaît comme un lien brisé. Que dois-je inclure dans le DetailView
pour générer le graphique pour chaque page ?
graph.py
:
def plotResults(request):
p=get_object_or_404(Read_alignment,pk=id)
x =[]
y=[]
x.append(p.start)
x.append(p.stop)
y.append(p.count)
y.append(p.count)
fig=plt.figure()
ax= fig.add_subplot(311)
ax.set_xlim(right=30)
ax.step(x,y,'-',where='post', label='post')
canvas = FigureCanvas(fig)
response= HttpResponse(mimetype='image/png')
canvas.print_png(response)
return response
url.py
:
url(r'^(?P<pk>\d+)/align/plotResults.png$',plotResults),
url(r'^(?P<pk>\d+)/align/$',AlignDetailView.as_view(), name='AlignDetailView'),
views.py
:
class AlignDetailView(DetailView):
model = Read_alignment
def get_queryset(self):
queryset= Read_alignment.objects.filter(chr__icontains=3l)
return queryset
def get_context_data(self, **kwargs):
context = super(AlignDetailView,self).get_context_data(**kwargs)
context['alignment'] = self.object
return context
Comment lier le graphique au modèle, de préférence sans balises statiques ou médias ? Est-il possible de générer les graphiques sans enregistrer les images PNG dans le dossier statique ?