[PYTHON] J'ai touché Bergeronnette (2). Introduction des extensions django.

introduction

Bonjour.

Je voudrais poursuivre le développement en utilisant Wagtail, mais pour le moment, aucune des bibliothèques requises pour le débogage, etc. n'est installée. En parlant de bibliothèques Django qui peuvent être utilisées pour le débogage, django-extensions ou [django-debug-toolbar](https: // django-debug-toolbar) .readthedocs.io / en / latest /) et ainsi de suite. ~~ Il semble que seul cela soit connu ~~

Donc cette fois, j'ai introduit django-extensions, donc j'ai résumé le flux. Je voudrais également étudier la bibliothèque Django.

Article précédent


Introduction des extensions django

J'écrirai sur le flux d'introduction des extensions django. Je l'ai fait sur mac.

Tout d'abord, exécutez la commande suivante.

pip install django-extensions

Ensuite, ajoutez django-extensions à INSTALLED_APPS dans mysite / settings / base.py.

Vous pouvez utiliser les fonctions de base uniquement avec cela, mais certaines ne peuvent pas être utilisées. Il existe une commande qui peut générer un diagramme ER du modèle (décrit ci-dessous), mais elle a nécessité certaines étapes.

brew install Graphviz
pip install pygraphviz

J'ai eu une erreur et cela n'a pas fonctionné, mais j'ai pu la résoudre en examinant ce PROBLÈME. Référence: Impossible d'installer pygraphviz sur Mac OS 10.11.6


Essayez django-extensions

□show_urls La fonction de django-extensions est assez pratique. Le premier à introduire est show_urls.

python manage.py show_urls

Les relations dans la "Vue" et le "modèle" de l'URL définie dans le projet Django sont affichées dans une liste. Je pense que cette expression est difficile à comprendre, alors regardons d'abord le journal d'exécution. (Extrait)

/django-admin/login/    django.contrib.admin.sites.login        admin:login                                                                                                                                 
/django-admin/logout/   django.contrib.admin.sites.logout       admin:logout                                                                                                                                
/django-admin/password_change/  django.contrib.admin.sites.password_change      admin:password_change                                                                                                       
/django-admin/password_change/done/     django.contrib.admin.sites.password_change_done admin:password_change_done 

Sur le côté gauche, / django-admin / login / etc. http://localhost:8000/ Représente le chemin (modèle d'URL) qui suit.

Le django.contrib.admin.sites.login au centre indique l'emplacement de la fonction d'affichage. Jetez un œil à django.contirib.admin.sites sur le Github de django. Vous pouvez voir qu'il existe une fonction de connexion.

Admin: la connexion sur le côté droit représente le nom du chemin. Lors de la définition de l'URL dans url_patterns, définissez-la comme troisième argument

name="hogehoge"

Vous l'écrivez comme ça. Ce nom correspond à cela.

En guise de test, je voudrais ajouter une fonction de vue et l'examiner à l'aide de show_urls. J'écrirai le code basé sur le site de référence. Référence: [Introduction à Django] Affichons la page en utilisant des vues

Le code ajouté est le suivant.

home/views.py


from django.http import HttpResponse
 
def index(request):
    return HttpResponse("Hello, world.")

home/urls.py



from django.conf.urls import url
from . import views
 
urlpatterns = [
    url(r'^$', views.index, name='index'),
]

mysite/urls.py


from home import views as home_views #Ajouté en haut

url(r'^home/', include('home.urls')) #Ajouté dans la liste des urlpatterns

Cliquez [ici](http: // localhost: 8000 / home /) et lorsque Hello, world. S'affiche, c'est OK.

Maintenant, exécutons la commande suivante.

python manage.py show_urls | grep home
/home/  home.views.index        index

Il a été affiché. Ceci est utile lors de l'importation de vues ou de la saisie d'URL dans des modèles. Référence: Comment coller le lien URL de l'application Django et ses avantages

** □ Diagramme ER ** Référence: ER Diagram (Entity Relationship Diagram) Avec django-extensions, vous pouvez générer un diagramme ER d'un projet en png avec une seule commande. C'est un excellent outil qui peut être utilisé lors de la conception d'une base de données. Maintenant, exécutons la commande et vérifions-la.

python manage.py graph_models -a -o mysite_er.png

Je pense que mysite_er.png est généré dans le même répertoire. er.png Diagramme ER

□runserver_plus Je voudrais en présenter un autre cette fois. C'est parfait pour le débogage sur un navigateur Web. Exécutons la commande immédiatement.

python manage.py runserver_plus

Alors ...

CommandError: Werkzeug is required to use runserver_plus.  Please visit http://werkzeug.pocoo.org/ or install via pip. (pip install Werkzeug)

** Installez Wekzeug comme on vous l'a dit et réessayez. ** **

C'est différent d'un serveur d'exécution normal. Il y a quelque chose comme ça sur la dernière ligne du journal. Prenez-en note car vous l'utiliserez plus tard.

 * Debugger PIN: xxx-xxx-xxx

Maintenant, éditons le code comme suit.

home/views.py


return HttpReesponse("Hello, world.") #Faites une erreur exprès
スクリーンショット 2019-12-24 19.30.26.png Écran d'erreur スクリーンショット 2019-12-24 19.31.24.png Fond d'écran d'erreur

Il y a un bouton en forme de terminal sur le côté droit. Vous pouvez déboguer en cliquant dessus et en entrant le code PIN que vous avez noté précédemment. Étant donné que le code Python peut être exécuté de manière interactive, vous pouvez vérifier les valeurs d'objets tels que des variables.


à la fin

Cette fois, j'ai introduit des extensions django dans le projet. La prochaine fois, j'aimerais toucher Bergeronnette.

Recommended Posts

J'ai touché Bergeronnette (2). Introduction des extensions django.
J'ai touché HaikuFinder
J'ai touché Flask
J'ai touché le Tensorboard de TensorFlow
J'ai touché AWS Chalice
J'ai touché Bergeronnette (3). Enquête et mise en place de messages pop-up.
J'ai touché Wagtail (1) et remplaçons la méthode de sauvegarde.
J'ai essayé de toucher l'API Qiita
J'ai touché Tensorflow et keras
J'ai touché PyAuto pendant un moment
J'ai touché quelque chose qui s'appelle Touch Designer