C'est un mémo de lecture lors de la lecture des livres suivants. Cela prend environ 15 heures. (Dont, les travaux et recherches autour de la construction de l'environnement prennent environ 3 heures) Comme je l'ai mentionné, j'avais l'impression qu'il s'agissait d'un framework très léger qui pouvait être développé rapidement et était facile à développer.
--Nom du livre: un livre qui comprend Flask à partir de zéro
Désinstaller Python qui a été installé avec brew
$ brew uninstall python
$ brew uninstall python3
Désinstaller Python qui a été installé avec le programme d'installation officiel
Configuration de Pyenv
Création d'un environnement Python sur un Mac à l'aide de pyenv --Qiita
Installation de Python par pyenv, spécification de version, contrôle de fonctionnement
$ pyenv install -l
$ pyenv install 3.8.2
$ pyenv rehash
$ pyenv global 3.8.2
$ pyenv versions
$ which python
$ python -V
$ python2 -V
$ python3 -V
Vérification de l'installation et du fonctionnement du tuyau
$ pip install --upgrade pip
$ pip -V
$ pip3 -V
Configuration de Pipenv (vous pouvez créer un environnement dédié pour chaque projet et gérer les packages)
$ pip install pipenv
$ pipenv --version
À partir de maintenant, installez divers packages et exécutez des commandes après être entré dans l'environnement virtuel avec `` $ pipenv shell ''.
Les packages installés dans l'environnement virtuel peuvent être confirmés avec
$ pipenv graph```
--MacOS est livré avec Python 2.7 par défaut
L'entité se trouve sous `` / System / Library / Frameworks / Python.framework '' (elle ne peut pas être supprimée car elle est utilisée dans le système)
De plus, macOS Catalina comprend également Python 3 (la version de mai 2020 est la 3.7.3)
La substance est `` / usr / bin / python3 '' (ne peut pas non plus être effacée)
En regardant / usr / bin /, toutes les commandes des séries
python``` et `` python2 '' ont des liens symboliques vers Python 2.7 mentionnés ci-dessus.
La commande
python3``` n'appelle que le binaire placé directement, pas le lien symbolique.
$ ls -la /usr/bin/python*
lrwxr-xr-x 1 root wheel 75 10 8 2019 /usr/bin/python -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x 1 root wheel 82 10 8 2019 /usr/bin/python-config -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
lrwxr-xr-x 1 root wheel 75 10 8 2019 /usr/bin/python2 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x 1 root wheel 75 10 8 2019 /usr/bin/python2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
lrwxr-xr-x 1 root wheel 82 10 8 2019 /usr/bin/python2.7-config -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
lrwxr-xr-x 1 root wheel 76 10 8 2019 /usr/bin/pythonw -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7
lrwxr-xr-x 1 root wheel 76 10 8 2019 /usr/bin/pythonw2.7 -> ../../System/Library/Frameworks/Python.framework/Versions/2.7/bin/pythonw2.7
-rwxr-xr-x 1 root wheel 31488 3 18 00:42 /usr/bin/python3
pip3 soit inclus pour` `` pip
$ ls -la /usr/bin/pip*
-rwxr-xr-x 1 root wheel 31488 3 18 00:42 /usr/bin/pip3
--Il y a aussi des fichiers liés à Python dans
~ / Library / Python, mais cela contient la bibliothèque installée avec `` `` pip
.
--Werkzeug · Microframework basé sur Jinja2 pour Python, très léger --Werkzeug: une bibliothèque d'utilitaires WSGI simple --WSGI: bibliothèque I / F pour connecter des serveurs Web et des applications Web en Python --Jinja2: bibliothèque de moteurs de modèles souvent utilisée dans le développement Web Python
Seule la fonction principale de réception d'une demande d'utilisateur et de renvoi du résultat est implémentée. --Par défaut, il n'a que les deux bibliothèques ci-dessus, il n'y a donc pas de choses supplémentaires telles que la base de données et l'authentification.
La création d'applications évolutives est possible en combinant des fonctions étendues (hautement personnalisables)
--RDB est un ensemble avec Django, mais NoSQL etc. peut être utilisé avec Flask
--Haute affinité avec les micro-services
Un framework full stack qui contient la plupart des fonctionnalités nécessaires au développement Web
Un développement propre selon le type est possible
--Exemples de services utilisant Django: Instagram, Bitbucket, Udemy, Dropbox, Spotify, Youtube
--Flazk est un framework MTV (Model / Template / View)
--Si vous spécifiez `` méthodes '' dans les paramètres de routage, vous pouvez limiter les méthodes HTTP autorisées pour cette URL. --Si rien n'est spécifié, seul GET est autorisé
{% sinon session.logged_in%}
--Utilisez `` flash '' pour afficher un message à l'utilisateur
flash ('message')
--Modèle:
get_flashed_messages ()
--Si vous utilisez ```url_for '' ``, le nom et la méthode du lien seront automatiquement liés, vous n'avez donc pas besoin de modifier le code même si la destination du lien change. --Bien sûr, il peut être écrit non seulement du côté de la vue, mais aussi du code côté modèle
--``` return render_template ('entries.html', entries = entries) `` `peut être utilisé pour passer des arguments au modèle.
--```url_for ('method name', id = entry.id) `` `peut être utilisé pour passer des arguments pour afficher les méthodes
--app.route ('/ entries / <id>') Vous pouvez recevoir les arguments passés dans
url_for``` en faisant quelque chose comme `. --Si vous souhaitez limiter les types d'arguments que vous recevez, utilisez
`` <int: id> '' (les autres types entraîneront une erreur).
--Utilisez correctement la redirection et le render_template
--Le modèle est défini comme une classe en Python
--Définissez le comportement standard lors de la création d'un modèle avec `` def __init __ () ''
--``` def repr (self)
décrit le format de sortie de la console lorsque le modèle est référencé (ce n'est pas nécessaire)
--Une fois le modèle défini, il doit être reflété dans la base de données (principalement les deux façons suivantes)
Comment exécuter la définition du modèle sur la console et la refléter --Comment créer et refléter un script
Il est bon de préparer une vue pour chaque modèle et de créer un fichier en les associant un à un.
--Flask peut gérer les informations de session avec une variable appelée session``` --Settings:
session ['session name'] = True``` --Confirmation: ```si ce n'est pas session.get ('nom de session'): (Traitement) ``
--Destroy:
session.pop ('nom de session', Aucun)
--Deuxième argument: valeur à renvoyer si elle a déjà été rejetée (spécifiez `` Aucun '' sauf indication contraire)
SECRET_KEY = 'private key' '`` sur le corps principal de l'application, les informations de session seront automatiquement cryptées.DB
--Flask est un framework MTV, donc si vous définissez un modèle, vous pouvez facilement faire fonctionner la base de données en utilisant ORM.
Blueprint
――Si vous souhaitez diviser les fonctions d'une application qui a grandi, utilisez Blueprint (étendre avec une bibliothèque)
--``` @ app.errorhandler (code d'état au moment de l'erreur)
peut définir le processus pour chaque code d'état d'erreur
La ligne de commande --flask peut également être utilisée
$ export FLASK_APP = (chemin du répertoire avec __init __. py) `` ``: Si vous voulez le rendre persistant, ajoutez-le au fichier de configuration du shell comme il convient. --
$ export FLASK_ENV = development```: Au démarrage en mode débogage (si non défini, mode production)--Application Factory vous permet de créer des applications dans des fonctions au lieu de globalement --L'application créée à l'aide de ceci ne peut pas être référencée directement de l'extérieur, appelez-la donc en utilisant la méthode `` current_app ''.
--Il existe différentes bibliothèques de test Python (cette fois, j'utiliserai le test unitaire standard Python)
Écrivez les paramètres de la base de données de test dans le fichier du corps de l'application afin que la configuration de test puisse être lue.
-- def setup (self) `` ``: La première méthode à exécuter lors de l'exécution d'un test --
def tearDown (self)
: Méthode exécutée juste avant la fin du test
--``` def test _... ()
: corps de la méthode de test
La couverture de test peut être mesurée avec la bibliothèque `` couverture ''
$ pipenv install coverage
--Créez .coveragerc '' et écrivez ce qui suit pour spécifier le dossier à tester. --``` [exécuter] source = ./ (chemin)
`$ coverage run -m unittest
-- $ rapport de couverture -m
: mesure de la couverture
-- $ coverage html
: Création d'un rapport de couverture--``` statique `` La zone sous le répertoire est automatiquement reconnue comme l'endroit où placer les fichiers statiques tels que CSS et JS.
<link rel =" stylesheet "href =" {{url_for ('static', filename = 'style.css')}} ">
`--Il existe une description pour importer `` jquery-3.2.1.slim.min.js '' depuis le CDN jQuery, mais pour le moment, il est nécessaire de réécrire 3.2.1 en 3.5.1.
Recommended Posts