[PYTHON] Verwendung der Template-Engine in einer Dateianwendung von Pyramid

Verwendung der Template-Engine in einer Dateianwendung von Pyramid

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.

Verwendung der Template-Engine

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.

Führen Sie die in der Einstellungsdatei geschriebenen Einstellungen mit einer einzigen Dateianwendung durch

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

Verwendung der Template-Engine in einer Dateianwendung von Pyramid
Verwenden Sie die jinja2-Vorlage in einer Excel-Datei
Verwendung von Klassen in Theano
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
Verwendung berechneter Spalten in CASTable
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Verwendung von Google Test in C-Sprache
Verwendung von Anacondas Interpreter mit PyCharm
Verwendung von __slots__ in der Python-Klasse
Verwendung regulärer Ausdrücke in Python
So verwenden Sie Map in ViewPager von Android
Verwendung ist und == in Python
Verwendung der C-Bibliothek in Python
[Einführung in die Udemy Python3 + -Anwendung] 23. Verwendung von Tapuru
Verwendung der Python-Bildbibliothek in der Python3-Serie
Zusammenfassung der Verwendung von MNIST mit Python
Wie man tkinter mit Python in Pyenv benutzt
So lesen Sie Dateien in verschiedenen Verzeichnissen
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwendung von virtualenv
Verwendung von Image-Match
Wie man Shogun benutzt
Verwendung von Pandas 2
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Wie man teilweise verwendet
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von virtualenv
Wie benutzt man Matplotlib?
Verwendung von iptables
Wie benutzt man numpy?
Verwendung von TokyoTechFes2015
Wie benutzt man venv
Verwendung des Wörterbuchs {}
Wie benutzt man Pyenv?
Verwendung der Liste []
Wie man Python-Kabusapi benutzt
Verwendung von OptParse
Verwendung von return
Wie man Imutils benutzt
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Verwendung von Bootstrap in der generischen Klassenansicht von Django
Verwendung der Exist-Klausel in Django Queryset
Verwendung von Variablen in systemd Unit-Definitionsdateien
[Einführung in die Udemy Python3 + -Anwendung] 27. Verwendung des Wörterbuchs