[PYTHON] Comment utiliser le moteur de modèle dans une application de fichier de Pyramid

Comment utiliser le moteur de modèle dans une application de fichier de Pyramid

Avec pyramid, vous pouvez créer une application à partir d'un seul fichier comme indiqué dans Exemple de hello world dans la documentation officielle. Cependant, dans la plupart des cas, il existe de nombreux modèles de création d'un projet (pcreate) et de démarrage à partir d'un fichier de configuration (pserve development.ini).

D'un autre côté, quand je trouve difficile de créer un projet, je veux aussi le faire si je peux le faire avec une application à un seul fichier. Cependant, il existe peu d'exemples d'applications à un seul fichier dans la documentation officielle. Il s'arrête à l'exemple de retour d'un objet Response sans utiliser le moteur de modèle, et il n'y a pas de description au-delà.

Une note sur la façon d'utiliser le moteur de template (par exemple mako, jinja2, chameleon) dans une application à un seul fichier.

hello world

Cité de la documentation officielle. Création de votre première application Pyramid - The 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()

Je veux changer la partie suivante.

--Renvoyer un objet Response au lieu du moteur de modèle --Par exemple, je veux utiliser mako.

Comment utiliser le moteur de modèle

Inclure des modules pour chaque moteur de modèle

Pour mako, vous devez spécifier l'emplacement du répertoire de niveau supérieur du modèle.

Effectuer les paramètres écrits dans le fichier de paramètres avec une seule application de fichier

Si vous avez créé un projet, écrivez les paramètres de l'application dans le fichier de paramètres (par exemple development.ini). Par exemple, les paramètres du moteur de modèle mentionné précédemment sont écrits comme suit.

mako.directories = appname:templates

Je veux définir ce "mako.directories" même dans une seule application de fichier. Dans ce cas, transmettez le dictionnaire en tant qu'argument au constructeur de pyramid.config.Configurator.

En fait, la fonction principale lors de la création d'un projet a un argument appelé settings, qui est passé au constructeur.

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()

Le fichier .ini devient juste un dictionnaire une fois passé, vous pouvez donc lui donner un dictionnaire. La forme est la suivante.

if __name__ == '__main__':
    #Faire de la même hiérarchie que le code source de l'application la hiérarchie de niveau supérieur du modèle
    here = os.path.abspath(os.path.dirname(__file__))
    settings = {"mako.directories": [here]}
    config = Configurator()

Après cela, vous pouvez créer une application à fichier unique à l'aide du moteur de modèle en procédant comme suit de la même manière que lors de la création à partir d'un projet. (Étant donné que la partie du modèle est divisée en premier lieu, il ne peut pas être appelé une application à un fichier)

Voici un exemple de combinaison de ces éléments.

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}!

Pour ce qui suit, définissez "pyramid.reload_templates" sur True.

Recommended Posts

Comment utiliser le moteur de modèle dans une application de fichier de Pyramid
Utilisez le modèle jinja2 dans un fichier Excel
Comment utiliser les classes dans Theano
Comment utiliser SQLite en Python
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
Comment utiliser les colonnes calculées dans CASTable
[Introduction à Python] Comment utiliser la classe en Python?
Comment utiliser Google Test en langage C
Comment utiliser l'interpréteur d'Anaconda avec PyCharm
Comment utiliser __slots__ dans la classe Python
Comment utiliser les expressions régulières en Python
Comment utiliser Map dans ViewPager d'Android
Comment utiliser is et == en Python
Comment utiliser la bibliothèque C en Python
[Introduction à l'application Udemy Python3 +] 23. Comment utiliser Tapuru
Comment utiliser la bibliothèque d'images Python dans la série python3
Résumé de l'utilisation de MNIST avec Python
Comment utiliser tkinter avec python dans pyenv
Comment lire des fichiers dans différents répertoires
Comment utiliser xml.etree.ElementTree
Comment utiliser Python-shell
Remarques sur l'utilisation de tf.data
Comment utiliser virtualenv
Comment utiliser la correspondance d'image
Comment utiliser le shogun
Comment utiliser Pandas 2
Comment utiliser Virtualenv
Comment utiliser numpy.vectorize
Comment utiliser pytest_report_header
Comment utiliser partiel
Comment utiliser Bio.Phylo
Comment utiliser SymPy
Comment utiliser x-means
Comment utiliser WikiExtractor.py
Comment utiliser IPython
Comment utiliser virtualenv
Comment utiliser Matplotlib
Comment utiliser iptables
Comment utiliser numpy
Comment utiliser TokyoTechFes2015
Comment utiliser venv
Comment utiliser le dictionnaire {}
Comment utiliser Pyenv
Comment utiliser la liste []
Comment utiliser python-kabusapi
Comment utiliser OptParse
Comment utiliser le retour
Comment utiliser pyenv-virtualenv
Comment utiliser imutils
[Pour les débutants] Comment utiliser la commande say avec python!
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Comment utiliser le bootstrap dans la vue de classe générique Django
Comment utiliser la clause exist dans l'ensemble de requêtes Django
Comment utiliser des variables dans les fichiers de définition d'unité systemd
[Introduction à Udemy Python3 + Application] 27. Comment utiliser le dictionnaire