Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (5) [Introduction au fonctionnement de la base de données avec le shell Django]

Composition d'articles de commentaires

No. Titre
1 Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (1) [Construction de l'environnement]
2 Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (2) [Création de projet]
3 Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (3) [Création d'application / configuration de la base de données]
4 Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (4) [Introduction aux paramètres de routage et aux modèles de conception MTV]
5 Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (5) [Introduction au fonctionnement de la base de données avec le shell Django]
6 Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (6) [MTV design pattern completion]

Environnement de développement

Nous allons poursuivre la discussion en supposant un environnement Mac.

Vérifiez la version Python comme suit.

$ python3 --version
Python 3.5.2

Django shell

Cette fois, je vais vous présenter comment utiliser `` Django shell ''.

La dernière fois, j'ai présenté comment faire fonctionner et vérifier la base de données à l'aide de l'administrateur Django. Si vous êtes habitué à Ruby on Rails, pourquoi ne pas utiliser des rails c '' sur une telle console pour faire fonctionner et vérifier? Je suis sûr qu'il y a des gens qui pensent cela, mais je pense que c'est vrai. Django a également une telle console, qui est Django shell ''.

Utilisons le shell Django

Tout d'abord, lancez `` Django shell ''.

Lancez Django


$ python3 manage.py shell
Python 3.5.2 (default, Jun 29 2016, 13:43:58) 
[GCC 4.2.1 Compatible Apple LLVM 7.3.0 (clang-703.0.31)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 

Affichons les données avec le shell Django

Jetons maintenant un coup d'œil aux données du modèle défini `` Post ''.

>>> Post.objects.all()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'Post' is not defined

Malheureusement, j'ai eu une erreur (même si je n'ai pas eu d'erreur si j'ai suivi la même procédure que Ruby on Rails). Django semble devoir d'abord importer le modèle.

>>> from blog.models import Post
>>> Post.objects.all()
<QuerySet [<Post:Exemple de titre d'article>]>

Vous pouvez maintenant vérifier les données dans la base de données. querysetLe nom sort, mais il semble qu'un ensemble de requêtes soit une liste d'objets fournis par le modèle.

Pause café: comparez Django avec Ruby on Rails

Comme vous l'avez peut-être remarqué dans les articles précédents, Django est dû au fait que j'ai appris Ruby on Rails comme le tout premier framework Web et qu'il est devenu la norme en moi. Dans certains endroits, j'ai l'impression qu'il est plus difficile à utiliser que Ruby on Rails. Cependant, le framework Web de Python est très attractif pour l'utilisation de l'apprentissage automatique. Personnellement, je recommande de jeter les bases de votre application Web avec Ruby on Rails et de créer votre API Web avec Django.

Créons un objet avec le shell Django

Créez un nouveau `` Post '' dans la base de données.

>>> Post.objects.create(author=ryosuke, title="ryosuke's article", text="Ceci est un article pour Qiita")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'ryosuke' is not defined

Vous avez une erreur. author=ryosukeJ'ai une erreur. authorIl n'augmente pas du nom spécifié. .. ..

En fait, quand j'ai fait un modèle avec Django (Explication de l'application Web Python (Django) de manière simple (3): Créer un modèle #% E3% 83% A2% E3% 83% 87% E3% 83% AB% E3% 81% AE% E4% BD% 9C% E6% 88% 90)), blog / models.py` Dans

blog/models.Partie de py


author = models.ForeignKey('auth.User')

En effet, il est configuré pour faire référence au modèle utilisateur. Si vous définissez simplement cela comme une chaîne de caractères, vous pouvez créer un objet pour un nouveau nom sans aucun problème. Cependant, cela rend difficile la gestion du nom de l'utilisateur, nous gérons donc les utilisateurs en tant qu'utilisateurs et les publications en tant que publications afin que les publications se réfèrent aux utilisateurs.

Cette fois, nous ne créerons pas de nouvel utilisateur, mais donnerons à l'utilisateur `` ryosuke``` les informations de `ʻadmin``` et créerons un nouvel objet à partir de là.

Donner des informations d'administrateur à ryosuke


>>> from django.contrib.auth.models import User
>>> User.objects.all()
<QuerySet [<User: admin>]>
>>> ryosuke = User.objects.get(username='admin')
>>> ryosuke
<User: admin>

Créer un nouvel objet dans Post


>>> Post.objects.create(author=ryosuke, title="ryosuke's article", text="Ceci est un article pour Qiita")
<Post: ryosuke's article>

Cela a fonctionné. Jetons un coup d'œil à la liste d'objets Post.

>>> Post.objects.all()
<QuerySet [<Post:Exemple de titre d'article>, <Post: ryosuke's article>]>

Vous pouvez voir qu'il y a plus de nouveaux `` Post ''.

Extrayons des objets avec des conditions spécifiques avec le shell Django

Pour extraire une condition spécifique, utilisez `filter ()` pour la partie qui était all () `` `` et donnez les informations de propriété à l'argument. Par exemple, pour extraire uniquement les messages avec author = ryosuke```, ce sera comme suit.

>>> Post.objects.filter(author=ryosuke)
<QuerySet [<Post:Exemple de titre d'article>, <Post: ryosuke's article>]>

Pour l'instant, ce n'est pas différent de tous les objets, mais si vous avez plus de `` auteur```, vous pouvez les séparer par auteur de cette manière.

En plus d'extraire des conditions qui correspondent exactement, vous pouvez également rechercher des correspondances partielles qui incluent en partie une chaîne de caractères spécifique.

Extraire uniquement les objets qui incluent l'article dans le titre


>>> Post.objects.filter(title__contains='article')
<QuerySet [<Post: ryosuke's article>]>

titleÀ__containsEn ajoutant, vous serez capable de bien gérer les correspondances partielles (c'est assez pratique).

En Python, il y a souvent deux barres inférieures pour ce qui précède. Référence: Tutoriel Django Girls: Query Set 1

Note Il y a deux traits de soulignement entre title et contains, qui est la syntaxe ORM de Django. Le titre du nom de champ et les contenus du type de classement sont concaténés avec deux barres de soulignement. S'il n'y a qu'un seul trait de soulignement, il sera jugé comme le nom de champ title_contains et une erreur se produira. ("FieldError: Impossible de résoudre le mot clé title_contains")

Ensuite, c'est aussi une fonction fréquemment utilisée, mais c'est une méthode pour extraire uniquement les articles qui ont déjà été publiés. Qiita crée également des articles, mais il peut être laissé sous forme de brouillon. C'est la méthode lorsque vous souhaitez extraire uniquement publié à ce moment.

>>> from django.utils import timezone
>>> Post.objects.filter(published_date__lte=timezone.now())
<QuerySet [<Post:Exemple de titre d'article>]>

Comme vous le savez peut-être, la partie lte '' est la condition pour écrire un filtre, comme le contenir ''. lteEstless than or equal toAbréviation de «publié» dans les symboles mathématiques_date <=Ce sera "l'heure actuelle". C'est une condition qu'il soit extrait avant l'heure actuelle ou s'il correspond à l'heure actuelle. L'objet ajouté à partir du shell Django précédemment n'avait pas défini published_date '' ', donc cette condition ne s'applique pas.

Comme nous utilisons souvent un trait de soulignement pour les noms de variables, nous utilisons deux traits de soulignement dans la syntaxe ORM de Django. S'il n'y a qu'un seul trait de soulignement, il sera traité comme un nom de variable, ce qui entraînera une erreur FieldError: Impossible de résoudre le mot-clé title_contains '' `` `.

Mettre à jour le contenu de l'objet

L'objet que vous venez de créer n'a pas encore été publié (`` publier ''), alors publions-le.

Obtenez le modèle créé


post = Post.objects.get(id=2)
>>> post
<Post: ryosuke's article>

blog/models.publier avec py()Comme la méthode est définie comme suit, il est facile de publier en utilisant cette méthode._Vous pouvez mettre à jour la valeur de la date.




#### **`blog/models.py`**
```py

def publish(self):
    self.published_date = timezone.now()
    self.save()

Maintenant, utilisons cette méthode `` publish () ''.

>>> post.publish()
>>> Post.objects.filter(published_date__lte=timezone.now())
<QuerySet [<Post:Exemple de titre d'article>, <Post: ryosuke's article>]>

Vous avez publié l'article avec succès.

Trier la liste des objets

Enfin, savons comment utiliser le réarrangement facilement. Les pages Web sont souvent triées par montant ou par date et heure, donc je pense que c'est une commande fréquemment utilisée.

Utilisez ```order_by () `` `pour le tri.

>>> Post.objects.order_by('created_date')
<QuerySet [<Post:Exemple de titre d'article>, <Post: ryosuke's article>]>

Fondamentalement, s'il s'agit d'une date et d'une heure, elle sera classée par ordre chronologique. Si vous souhaitez trier dans l'ordre des nouveautés, vous pouvez spécifier cet ordre inverse comme suit.

>>> Post.objects.order_by('-created_date')
<QuerySet [<Post: ryosuke's article>, <Post:Exemple de titre d'article>]>

L'idée est d'ajouter `` -``` à l'argument de `ʻorder_by. ascOudesc```N'est-ce pas (je pense qu'il prend également en charge ce domaine).

Vous pouvez maintenant trier.

Quitter le shell Django

Parfois, je lance la console, mais au début je ne sais pas comment la quitter.

>>> exit()

N'oubliez pas ce dernier `` () ''.

Article de commentaire suivant

Explication de l'application Web Python (Django) d'une manière facile à comprendre, même pour les débutants (6) [Achèvement du modèle de conception MTV]

Les références

prime

Nous vous attendons pour nous suivre!

Présentation du service N'hésitez pas à nous contacter si vous êtes intéressé par "Kikagaku", un service de tutorat individuel pour l'apprentissage automatique qui vous permet d'apprendre "mathématiques → programmation → applications Web" en une seule fois.

Recommended Posts

Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (5) [Introduction au fonctionnement de la base de données avec le shell Django]
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (3) [Création d'application / configuration de la base de données]
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (4) [Route setting / Introduction to MTV design patterns]
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (2) [Création de projet]
Explication facile à comprendre de l'application Web Python (Django) même pour les débutants (1) [Construction de l'environnement]
Explication facile à comprendre de l'application Web Python (Django), même pour les débutants (6) [MTV design pattern completion]
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
[Introduction à l'application Udemy Python3 +] 17. Opération de liste
[Pour les débutants] Essayez le web scraping avec Python
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
[Introduction à Udemy Python3 + Application] 47. Traitez le dictionnaire avec une instruction for
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Explication de la création d'une application pour afficher des images et dessiner avec Python
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
Mise à jour de «Introduction à l'accueil de l'application Web Python pour les ingénieurs Web de 3e année qui sont lents»
[Introduction à Udemy Python3 + Application] 26. Copie du dictionnaire
[Introduction à Udemy Python3 + Application] 19. Copie de la liste
[Introduction à l'application Udemy Python3 +] 43. instruction for else
[Introduction à l'application Udemy Python3 +] 9. Tout d'abord, imprimez avec print
Introduction à la programmation (Python) TA Tendency pour les débutants
[Introduction pour les débutants] Manipuler MySQL avec Python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Django super introduction par les débutants Python! Partie 5 J'ai créé une application de journal super simple avec une vue générale basée sur la classe
(Python) Essayez de développer une application Web en utilisant Django
[Chapitre 5] Introduction à Python avec 100 coups de traitement du langage
[Introduction à Udemy Python3 + Application] 53. Dictionnaire des arguments de mots-clés
Application Web réalisée avec Python3.4 + Django (Construction de l'environnement Part.1)
[Chapitre 3] Introduction à Python avec 100 coups de traitement du langage
[Python] Introduction au scraping WEB | Résumé des méthodes pouvant être utilisées avec webdriver
[Pour les débutants] Web scraping avec Python "Accédez à l'URL de la page pour obtenir le contenu"
[Chapitre 2] Introduction à Python avec 100 coups de traitement du langage
Les débutants essaient de créer une application Web de combat en ligne Othello avec Django + React + Bootstrap (1)
[Cloud 9] Essayez de créer un environnement avec django 1.11 de Python 3.4 sans même comprendre 1 mm
[Introduction à Udemy Python3 + Application] 52. Tapple d'arguments positionnels
Explication sur l'erreur NoReverseMatch dans "python django super introduction"
Scraping Web pour débutants avec Python (4) --2 Scraping sur Cloud Shell
[Chapitre 4] Introduction à Python avec 100 coups de traitement du langage
[Introduction à l'application Udemy Python3 +] 42. pour instruction, instruction break et instruction continue
■ Kaggle Practice pour les débutants - Introduction de Python - par Google Colaboratory
[Explication pour les débutants] Introduction au traitement du pliage (expliqué dans TensorFlow)
[Explication pour les débutants] Introduction au traitement du pool (expliqué dans TensorFlow)
[IPdb] Les débutants en développement Web ont tenté de résumer le débogage avec Python
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Introduction à Python pour les utilisateurs de VBA - Appeler Python depuis Excel avec xlwings -
Application Web avec Python3.3.1 + Bottle (1) - Changer le moteur de modèle en jinja2
[Raspi4; Introduction au son] Enregistrement stable de l'entrée sonore avec python ♪
[Python] Introduction à la création de graphiques à l'aide de données de virus corona [Pour les débutants]
(Pour les débutants) Essayez de créer une API Web simple avec Django
[Introduction à Udemy Python3 + Application] 51. Soyez prudent avec les arguments par défaut
Introduction à Python Django (2) Win
Créer une application Web avec Django
Application Web avec Python + Flask ② ③
~ Conseils pour les débutants de Python présentés avec amour par Pythonista ③ ~
Introduction à Python pour, pendant
Application Web avec Python + Flask ④
[Python] Qu'est-ce qu'une tranche? Une explication facile à comprendre de son utilisation avec un exemple concret
Système de notation IPynb réalisé avec TA d'introduction à la programmation (Python)
L'histoire de la création d'un pilote standard pour db avec python.