Les débutants en Python ont essayé d'utiliser Bottle et cela a fonctionné facilement de manière inattendue

introduction

Ceci est un mémo pour moi, les détails sont les suivants.

Environnement d'exécution

Chose que tu veux faire

Ce que j'ai fait

Déplaçons-le pour le moment.

Ne pensez pas que c'est difficile, essayez d'abord jusqu'à ce que Hello World s'affiche dans le navigateur.

#pip installer pour importer
$ pip install bottle
# -*- coding:utf-8 -*-

from bottle import route, run


@route('/hello')
def hello():
    return "Hello World!"


run(host='localhost', port=8080, debug=True)

Exécutez-le avec PyCharm et ouvrez-le dans votre navigateur. http://localhost:8080/hello

image

Vous pouvez maintenant voir Hello World dans votre navigateur !! Amazing Bottle

Essayez le routage dynamique

# -*- coding:utf-8 -*-

from bottle import route, run


@route('/hello/')
@route('/hello/<user>')
def hello(user="taro"):
    return "Hello {user}".format(user=user)


@route('/date/<month:re:[a-z]+>/<day:int>/<path:path>')
def date(month, day, path):
    return "{month}/{day} {path}".format(month=month, day=day, path=path)


run(host='localhost', port=8080, debug=True)

Utiliser les paramètres reçus

En définissant une valeur par défaut dans l'argument de la méthode à exécuter, elle peut être affichée même si l'utilisateur n'est pas passé. http://localhost:8080/hello/ image

http://localhost:8080/hello/masaibar image

Contraindre les paramètres

Des contraintes de valeur simples peuvent être données.

http://localhost:8080/date/april/29//dev/null image

Essayez GET, POST

Il semble qu'il existe deux façons d'écrire des annotations telles que GET et POST. @get ('/ hoge') et @route ('/ hoge', method = 'GET') ont le même comportement.

La valeur transmise est reçue en se référant aux variables suivantes.

De plus, vous pouvez recevoir diverses données telles que les en-têtes et le corps de la requête. Référence

# -*- coding:utf-8 -*-

from bottle import route, run
from bottle import get, post, request


@route('/login', method='GET')  # or @get('/login')
def login():
    username = request.query.get('user')
    password = request.query.get('pass')

    #Nom d'utilisateur lorsque rien n'est passé dans GET,Ne mettez rien dans le mot de passe
    username = "" if username is None else username
    password = "" if password is None else password

    return '''
    <form action="/login" method="post">
            Username: <input name="username" type="text" value="{username}"/>
            Password: <input name="password" type="password" value="{password}"/>
            <input value="Login" type="submit" />
        </form>
    '''.format(username=username, password=password)


@route('/login', method='POST')  # or @post('/post')
def do_login():
    username = request.forms.get('username')
    password = request.forms.get('password')

    return "{username} {password}".format(username=username, password=password)


run(host='localhost', port=8080, debug=True)

GET http://localhost:8080/login image

http://localhost:8080/login?user=hoge&pass=fuga image

POST image

Essayez d'afficher la page d'erreur

# -*- coding:utf-8 -*-

from bottle import route, run
from bottle import error


@route('/hello')
def hello():
    return "Hello World!"


@error(404)
def error404(error):
    return "Nothing here sorry {error}".format(error=error)


run(host='localhost', port=8080, debug=True)

Je marche délibérément sur une URL qui n'existe pas. http://localhost:8080/hellow image

en conclusion

Pour être honnête, j'ai été surpris que ça bouge plus facilement que prévu. Cette fois, je me suis concentré sur le déplacement sans penser aux modèles, mais quand je l'ai recherché, j'ai senti que pas mal de gens n'utilisaient que le moteur de modèles. (Est-ce que Jinja2 est populaire?)

référence

Tutorial — Bottle 0.13-dev documentation : http://bottlepy.org/docs/dev/tutorial.html Introduction facile de 6 types de frameworks Web Python - Mojilog: http://mojix.org/2013/04/13/python-six-wafs Maîtrisez l'objet Requête / Réponse de Bottle --Qiita: http://qiita.com/tomotaka_ito/items/62fc4d58d1be7867a158 La comparaison de None en Python utilise n'est pas le == - is Hello Hello monmon! : http://monmon.hateblo.jp/entry/20110214/1297710749

Recommended Posts

Les débutants en Python ont essayé d'utiliser Bottle et cela a fonctionné facilement de manière inattendue
J'ai essayé de créer un projet en utilisant Python sur Docker avec PyCharm, mais cela a fonctionné avec Docker Compose
J'ai essayé de créer une application todo en utilisant une bouteille avec python
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
J'ai essayé de lire un fichier CSV en utilisant Python
Un débutant en python a tenté de faire un stage dans une entreprise informatique [Enquête sur le chatbot jour 2]
Un débutant en python a tenté de faire un stage dans une entreprise informatique [Processus de développement du jour 1]
Quand j'ai essayé de créer un environnement virtuel avec Python, cela n'a pas fonctionné
Une histoire qui était pratique lorsque j'ai essayé d'utiliser le module d'adresse IP python
J'ai effectué un processus de connexion / déconnexion en utilisant Python's Bottle.
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django-Partie 7-
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 1-
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 2
Un débutant en python a tenté de faire un stage dans une entreprise informatique [Jour 3 vers les nuages ...]
[Débutant] [Python / Django] Un ingénieur web débutant a essayé un didacticiel Django - Partie 0-
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un tutoriel Django - Partie 5
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un tutoriel Django - Partie 6
[Python] J'ai essayé d'exécuter un serveur local en utilisant flask
J'ai essayé de dessiner une pseudo figure fractale en utilisant Python
[Débutant] [Python / Django] Un ingénieur Web débutant a essayé un didacticiel Django - Partie 3
J'ai essayé d'utiliser Python (3) au lieu d'un calculateur de fonctions
Quand j'ai essayé le concours AtCoder pour débutants, c'était un résultat terrible, alors je regarde en arrière
Une note lors de la création d'un graphe dirigé à l'aide de Graphviz en Python
Scripts pouvant être utilisés lors de l'utilisation de Bottle en Python
Quand j'ai essayé de gratter en utilisant des requêtes en python, j'étais accro à SSLError, donc un mémo de contournement
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[Python] Apparaît lors de l'utilisation de iterdir () etc. [Errno 20] Pas un répertoire: '*** / .DS_Store'
J'ai essayé de créer une expression régulière de "date" en utilisant Python
Remarques sur l'utilisation de la saisie semi-automatique lors de l'exécution interactive de Python sous Windows
Méthode de sortie du journal des erreurs lors de l'utilisation du framework Bottle avec GAE / Python
Essayer lorsque Visual Studio Code ne peut pas charger un module Python
Un mémorandum lors de l'utilisation d'une belle soupe
Précautions lors de l'utilisation de Pit avec Python
J'ai fait un Line-bot avec Python!
Créer une interface graphique python à l'aide de tkinter
Dessiner une courbe Silverstone en utilisant Python
J'ai essayé d'utiliser Thonny (Python / IDE)
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (05 ~ 09)
Précautions lors de la création d'un générateur Python
Précautions lors de l'utilisation de phantomjs de python
Lors de l'utilisation de MeCab avec python dans virtualenv
Précautions lors de l'utilisation de six avec Python 2.5
Lors de l'utilisation d'expressions régulières en Python
Lors de l'écriture d'un programme en Python
Le débutant en Python a essayé 100 traitements de langage Knock 2015 (00 ~ 04)
J'ai créé un bot Discord en Python qui se traduit quand il réagit
J'ai essayé d'utiliser eval (a, b) pour Fibonacci, mais ce n'était pas rapide
Une note utile lors de l'utilisation de Python après une longue période
Démarrez un serveur Web en utilisant Bottle et Flask (j'ai également essayé d'utiliser Apache)
Quand je retourne en utilisant le chainer, ça va un peu