Frage

Ich bin mir nicht sicher, was ich falsch mache, es wäre großartig, wenn Sie mich darauf hinweisen könnten, was ich lesen soll. Ich habe das erste Cherrypy -Tutorial "Hello World" genommen, das eine kleine Matplotlib -Handlung hinzugefügt hat. Frage 1: Woher weiß ich, wo die Datei gespeichert wird? Es ist zufällig, wo ich die Datei ausführe. Frage 2: Ich scheine das Bild nicht in meinem Browser zu öffnen/zu sehen. Wenn ich Quelle im Browser sehe, sieht alles richtig aus, aber kein Glück, auch wenn ich den vollständigen Bildpfad einbeziehe. Ich denke, mein Problem ist mit dem Weg, aber nicht sicher, wie hoch das passiert

Danke für die Hilfe Vincent

import cherrypy
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

class HelloWorld:

    def index(self):
        fig = plt.figure()
         ax = fig.add_subplot(111)
         ax.plot([1,2,3])
         fig.savefig('test.png')
        return ''' <img src="test.png" width="640" height="480" border="0" /> '''

    index.exposed = True

import os.path
tutconf = os.path.join(os.path.dirname(__file__), 'tutorial.conf')

if __name__ == '__main__':
    cherrypy.quickstart(HelloWorld(), config=tutconf)
else:
    cherrypy.tree.mount(HelloWorld(), config=tutconf)
War es hilfreich?

Lösung

Im Folgenden finden Sie einige Dinge, die für mich funktioniert haben, aber bevor Sie weiter fortfahren, empfehle ich Ihnen, dass Sie lesen diese Seite So konfigurieren Sie Verzeichnisse, die statische Inhalte enthalten.

Frage 1: Woher weiß ich, wo die Datei gespeichert wird?
Wenn Sie diktieren, wo die Datei gespeichert werden soll, sollte der Prozess des Findens einfacher werden.
Sie können beispielsweise Bilddateien in einem Unterverzeichnis namens "IMG" in Ihrem Cherrypy -Anwendungsverzeichnis wie folgt speichern:

fig.savefig('img/test.png') # note:  *no* forward slash before "img"

Und dann wie dieses anzeigen:

return '<img src="/img/test.png" />' # note:  forward slash before "img"

Frage 2: Ich scheine nicht in der Lage zu sein, das Bild in meinem Browser zu öffnen/zu betrachten.
Hier ist eine Möglichkeit, um statische Bilder für eine Cherrypy -Anwendung zur Verfügung zu stellen:

if __name__ == '__main__':
    import os.path
    currdir = os.path.dirname(os.path.abspath(__file__))
    conf = {'/css/style.css':{'tools.staticfile.on':True,
        'tools.staticfile.filename':os.path.join(currdir,'css','style.css')},
        '/img':{'tools.staticdir.on':True,
        'tools.staticdir.dir':os.path.join(currdir,'img')}}
    cherrypy.quickstart(root, "/", config=conf)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top