Mit pyramid können Sie eine Anwendung aus einer Datei erstellen, wie in Beispiel für Hallo Welt in der offiziellen Dokumentation gezeigt. In den meisten Fällen gibt es jedoch viele Muster zum Erstellen eines Projekts (pcreate) und zum Starten aus einer Konfigurationsdatei (pserve development.ini).
Wenn es mir jedoch unangenehm ist, ein Projekt zu erstellen, möchte ich es auch tun, wenn ich es mit einer Anwendung mit einer Datei tun kann. In der offiziellen Dokumentation finden sich jedoch nur wenige Beispiele für Anwendungen mit einer Datei. Es endet beim Beispiel der Rückgabe eines Antwortobjekts ohne Verwendung der Vorlagen-Engine, und darüber hinaus gibt es keine Beschreibung.
Ein Hinweis zur Verwendung der Vorlagen-Engine (z. B. Mako, Jinja2, Chamäleon) in einer Anwendung mit einer Datei.
hello world
Zitiert aus der offiziellen Dokumentation. Erstellen Ihrer ersten Pyramid-Anwendung - Das Pyramid Web Framework v1.5.1
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response
def hello_world(request):
return Response('Hello %(name)s!' % request.matchdict)
if __name__ == '__main__':
config = Configurator()
config.add_route('hello', '/hello/{name}')
config.add_view(hello_world, route_name='hello')
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()
Ich möchte den folgenden Teil ändern.
Fügen Sie Module für jede Template-Engine hinzu
Für mako müssen Sie den Speicherort des Verzeichnisses der obersten Ebene der Vorlage angeben.
Wenn Sie ein Projekt erstellt haben, schreiben Sie die Anwendungseinstellungen in die Einstellungsdatei (z. B. development.ini). Beispielsweise werden die zuvor erwähnten Einstellungen der Vorlagen-Engine wie folgt geschrieben.
mako.directories = appname:templates
Ich möchte diese "mako.directories" auch in einer einzelnen Dateianwendung festlegen. Übergeben Sie in einem solchen Fall das Wörterbuch als Argument an den Konstruktor von pyramid.config.Configurator.
Tatsächlich hat die Hauptfunktion beim Erstellen eines Projekts ein Argument namens settings, das an den Konstruktor übergeben wird.
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
config = Configurator(settings=settings)
config.include('pyramid_chameleon')
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('home', '/')
config.scan()
return config.make_wsgi_app()
Die INI-Datei wird nach der Übergabe nur noch zu einem Wörterbuch, sodass Sie ihr ein Wörterbuch geben können. Die Form ist wie folgt.
if __name__ == '__main__':
#Machen Sie dieselbe Hierarchie wie den Quellcode der Anwendung zur Hierarchie der Vorlage auf oberster Ebene
here = os.path.abspath(os.path.dirname(__file__))
settings = {"mako.directories": [here]}
config = Configurator()
Danach können Sie mithilfe der Vorlagen-Engine eine Anwendung mit einer Datei erstellen, indem Sie die folgenden Schritte wie beim Erstellen aus einem Projekt ausführen. (Da der Vorlagenteil in erster Linie unterteilt ist, kann er nicht als Anwendung mit einer Datei bezeichnet werden.)
Ein Beispiel für die Kombination dieser ist wie folgt.
onefile.py
from wsgiref.simple_server import make_server
from pyramid.config import Configurator
import os.path
def hello_world(request):
return {"name": request.matchdict["name"]}
if __name__ == '__main__':
here = os.path.dirname(os.path.abspath(__file__))
settings = {"mako.directories": here,
"pyramid.reload_all": True}
config = Configurator(settings=settings)
config.include("pyramid_mako")
config.add_mako_renderer(".html")
config.add_route('hello', '/hello/{name}')
config.add_view(hello_world, route_name='hello', renderer="hello.html")
app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
server.serve_forever()
hello.html
Hello ${name}!
Setzen Sie im Folgenden "pyramid.reload_templates" auf True.
Recommended Posts