Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (5) [Einführung in den DB-Betrieb mit Django-Shell]

Zusammensetzung der Kommentarartikel

No. Titel
1 Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (1) [Umgebungskonstruktion]
2 Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (2) [Projekterstellung]
3 Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (3) [Anwendungserstellung / DB-Einstellung]
4 Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (4) [Einführung in Routing-Einstellungen und MTV-Entwurfsmuster]
5 Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (5) [Einführung in den DB-Betrieb mit Django-Shell]
6 Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (6) [Vervollständigung des MTV-Entwurfsmusters]

Entwicklungsumgebung

Wir werden mit der Diskussion unter der Annahme einer Mac-Umgebung fortfahren.

Überprüfen Sie die Python-Version wie folgt.

$ python3 --version
Python 3.5.2

Django shell

Dieses Mal werde ich vorstellen, wie man `` `Django Shell``` verwendet.

Beim letzten Mal habe ich die Bedienung und Überprüfung der Datenbank mit Django admin vorgestellt. Wenn Sie an Ruby on Rails gewöhnt sind, können Sie auf einer solchen Konsole `` `Rails c``` verwenden, um zu bedienen und zu überprüfen. Ich bin mir sicher, dass es Leute gibt, die das denken, aber ich denke, das ist richtig. Django hat auch eine solche Konsole, die "Django Shell" ist.

Verwenden wir die Django-Shell

Starten Sie zuerst `` `Django Shell```.

Starten Sie 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)
>>> 

Lassen Sie uns die Daten mit der Django-Shell anzeigen

Schauen wir uns nun die Daten des definierten Modells `` `Post``` an.

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

Leider habe ich einen Fehler erhalten (obwohl ich keinen Fehler erhalten habe, wenn ich das gleiche Verfahren wie Ruby on Rails befolgt habe). Django scheint das Modell zuerst importieren zu müssen.

>>> from blog.models import Post
>>> Post.objects.all()
<QuerySet [<Post:Beispielartikel Titel>]>

Jetzt können Sie die Daten in der DB überprüfen. querysetDer Name kommt heraus, aber es scheint, dass ein Abfragesatz eine Liste von Objekten ist, die vom Modell bereitgestellt werden.

Kaffeepause: Vergleichen Sie Django mit Ruby on Rails

Wie Sie vielleicht in früheren Artikeln bemerkt haben, ist Django darauf zurückzuführen, dass ich Ruby on Rails als erstes Webframework gelernt habe und es zum Standard in mir geworden ist. An einigen Stellen habe ich den Eindruck, dass es schwieriger zu bedienen ist als Ruby on Rails. Das Webframework von Python ist jedoch für die Verwendung von maschinellem Lernen sehr attraktiv. Persönlich empfehle ich, mit Ruby on Rails den Grundstein für Ihre Webanwendung zu legen und Ihre Web-API mit Django zu erstellen.

Lassen Sie uns ein Objekt mit der Django-Shell erstellen

Erstellen Sie einen neuen `` `Post``` in der Datenbank.

>>> Post.objects.create(author=ryosuke, title="ryosuke's article", text="Dies ist ein Artikel für Qiita")
Traceback (most recent call last):
  File "<console>", line 1, in <module>
NameError: name 'ryosuke' is not defined

Du hast einen Fehler bekommen. author=ryosukeIch habe einen Fehler bekommen. authorEs erhöht sich nicht um den angegebenen Namen. .. ..

In der Tat, als ich mit Django ein Modell erstellt habe (Erklärung der Python-Webanwendung (Django) auf leicht verständliche Weise (3): Erstellen eines Modells #% E3% 83% A2% E3% 83% 87% E3% 83% AB% E3% 81% AE% E4% BD% 9C% E6% 88% 90)), `blog / models.py` Innerhalb von

blog/models.Ein Teil von py


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

Dies liegt daran, dass es auf das Benutzermodell verweist. Wenn Sie dies einfach als Zeichenfolge definieren, können Sie problemlos ein Objekt für einen neuen Namen erstellen. Dies macht es jedoch schwierig, den Benutzernamen zu verwalten. Daher verwalten wir Benutzer als Benutzer und Beiträge als Beiträge, sodass Beiträge auf Benutzer verweisen.

Dieses Mal erstellen wir keinen neuen Benutzer, sondern geben dem Benutzer `ryosuke``` die Informationen von admin``` und erstellen von dort aus ein neues Objekt.

Geben Sie Ryosuke-Administratorinformationen


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

Erstellen Sie ein neues Objekt in Post


>>> Post.objects.create(author=ryosuke, title="ryosuke's article", text="Dies ist ein Artikel für Qiita")
<Post: ryosuke's article>

Das hat funktioniert. Werfen wir einen Blick auf die Post-Objektliste.

>>> Post.objects.all()
<QuerySet [<Post:Beispielartikel Titel>, <Post: ryosuke's article>]>

Sie können sehen, dass es mehr neue `` `Post``` gibt.

Extrahieren wir Objekte mit bestimmten Bedingungen mit der Django-Shell

Um eine bestimmte Bedingung zu extrahieren, verwenden Sie `filter ()` für den Teil, der all () war, und geben Sie dem Argument die Eigenschaftsinformationen. Um beispielsweise nur Posts mit `` author = ryosuke``` zu extrahieren, ist dies wie folgt.

>>> Post.objects.filter(author=ryosuke)
<QuerySet [<Post:Beispielartikel Titel>, <Post: ryosuke's article>]>

Im Moment unterscheidet es sich nicht von allen Objekten, aber wenn Sie mehr "Autor" haben, können Sie diese auf diese Weise nach Autor trennen.

Sie können nicht nur Bedingungen extrahieren, die genau übereinstimmen, sondern auch nach Teilübereinstimmungen suchen, die teilweise eine bestimmte Zeichenfolge enthalten.

Extrahieren Sie nur Objekte, die Artikel im Titel enthalten


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

titleZu__containsDurch Hinzufügen können Sie Teilübereinstimmungen gut verarbeiten (dies ist sehr praktisch).

In Python gibt es häufig zwei Unterbalken für die oben genannten. Referenz: Django Girls Tutorial: Abfrageset 1

Note Es gibt zwei Unterstriche zwischen Titel und enthält, nämlich die ORM-Syntax von Django. Der Titel des Feldnamens und die Inhalte des Sortierungstyps werden mit zwei Unterbalken verknüpft. Wenn nur ein Unterstrich vorhanden ist, wird dieser als Feldname title_contains bewertet und es tritt ein Fehler auf. ("FieldError: Schlüsselwort title_contains kann nicht aufgelöst werden")

Als nächstes ist dies auch eine häufig verwendete Funktion, aber es ist eine Methode, um nur Artikel zu extrahieren, die bereits veröffentlicht wurden. Qiita erstellt auch Artikel, kann aber als Entwurf belassen werden. Dies ist die Methode, wenn Sie nur zum aktuellen Zeitpunkt veröffentlichte Informationen extrahieren möchten.

>>> from django.utils import timezone
>>> Post.objects.filter(published_date__lte=timezone.now())
<QuerySet [<Post:Beispielartikel Titel>]>

Wie Sie vielleicht wissen, ist der Teil `lte``` die Bedingung für das Schreiben eines Filters, wie das` enthalten. lteIstless than or equal to```Abkürzung für "veröffentlicht" in mathematischen Symbolen_date <=Es wird "aktuelle Zeit" sein. Es ist eine Bedingung, dass es vor der aktuellen Zeit extrahiert wird oder wenn es mit der aktuellen Zeit übereinstimmt. Für das zuvor aus der Django-Shell hinzugefügte Objekt wurde kein "veröffentlichtes Datum" festgelegt, daher gilt diese Bedingung nicht.

Da wir häufig einen Unterstrich für Variablennamen verwenden, verwenden wir zwei Unterstriche in der ORM-Syntax von Django. Wenn nur ein Unterstrich vorhanden ist, wird dieser als Variablenname behandelt, was zu einem `" FieldError: Schlüsselwort title_contains "` Fehler kann nicht behoben werden.

Aktualisieren Sie den Inhalt des Objekts

Das Objekt, das Sie gerade erstellt haben, wurde noch nicht veröffentlicht (`` `veröffentlichen```). Lassen Sie es uns also veröffentlichen.

Holen Sie sich das erstellte Modell


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

blog/models.veröffentlichen mit py()Da die Methode wie folgt definiert ist, ist es einfach, sie mit dieser Methode zu veröffentlichen._Sie können den Datumswert aktualisieren.




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

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

Verwenden wir nun diese `Publish ()` Methode.

>>> post.publish()
>>> Post.objects.filter(published_date__lte=timezone.now())
<QuerySet [<Post:Beispielartikel Titel>, <Post: ryosuke's article>]>

Sie haben den Artikel erfolgreich veröffentlicht.

Sortieren der Objektliste

Lassen Sie uns abschließend wissen, wie Sie die Umlagerung einfach verwenden können. Webseiten werden oft nach Menge oder Datum und Uhrzeit sortiert, daher denke ich, dass dies ein häufig verwendeter Befehl ist.

Verwenden Sie `order_by ()` zum Sortieren.

>>> Post.objects.order_by('created_date')
<QuerySet [<Post:Beispielartikel Titel>, <Post: ryosuke's article>]>

Wenn es sich um ein Datum und eine Uhrzeit handelt, wird es grundsätzlich in chronologischer Reihenfolge angeordnet. Wenn Sie in der Reihenfolge der neu hinzugefügten sortieren möchten, können Sie diese umgekehrte Reihenfolge wie folgt angeben.

>>> Post.objects.order_by('-created_date')
<QuerySet [<Post: ryosuke's article>, <Post:Beispielartikel Titel>]>

Die Idee ist, -``` zum Argument von `order_byhinzuzufügen.ascOderdesc```Ist es nicht (ich denke, es unterstützt auch diesen Bereich).

Jetzt können Sie sortieren.

Verlassen Sie die Django-Shell

Manchmal starte ich die Konsole, aber zuerst weiß ich nicht, wie ich sie beenden soll.

>>> exit()

Vergessen Sie nicht dieses letzte `()`.

Nächster Kommentarartikel

Erklärung der Python-Webanwendung (Django) auf leicht verständliche Weise, auch für Anfänger (6) [Vervollständigung des MTV-Entwurfsmusters]

Verweise

Bonus

Wir warten darauf, dass Sie uns folgen!

Serviceeinführung Bitte kontaktieren Sie uns, wenn Sie an "Kikagaku" interessiert sind, einem Einzelunterricht für maschinelles Lernen, mit dem Sie "Mathematik → Programmieren → Webanwendung" gleichzeitig lernen können.

Recommended Posts

Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (5) [Einführung in den DB-Betrieb mit Django-Shell]
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (3) [Anwendungserstellung / DB-Einstellung]
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (4) [Einführung in Routing-Einstellungen und MTV-Entwurfsmuster]
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (2) [Projekterstellung]
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (1) [Umgebungskonstruktion]
Leicht verständliche Erklärung der Python-Webanwendung (Django) auch für Anfänger (6) [Vervollständigung des MTV-Entwurfsmusters]
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
[Einführung in die Udemy Python3 + -Anwendung] 17. Listenoperation
[Für Anfänger] Versuchen Sie Web Scraping mit Python
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
[Einführung in die Udemy Python3 + -Anwendung] 47. Verarbeiten Sie das Wörterbuch mit einer for-Anweisung
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Erläuterung zum Erstellen einer Anwendung zum Anzeigen von Bildern und Zeichnen mit Python
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
Aktualisiert "Einführung in Python Web Application Homebrew für Webingenieure im 3. Jahr, die langsam sind"
[Einführung in die Udemy Python3 + -Anwendung] 26. Kopie des Wörterbuchs
[Einführung in die Udemy Python3 + -Anwendung] 19. Kopie der Liste
[Einführung in die Udemy Python3 + -Anwendung] 43. for else-Anweisung
[Einführung in die Udemy Python3 + -Anwendung] 9. Drucken Sie zunächst mit print
Einführung in die Programmierung (Python) TA Tendenz für Anfänger
[Einführung für Anfänger] Umgang mit MySQL mit Python
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Django super Einführung von Python-Anfängern! Teil 5 Ich habe eine supereinfache Tagebuchanwendung mit einer klassenbasierten Allzweckansicht erstellt
(Python) Versuchen Sie, eine Webanwendung mit Django zu entwickeln
[Kapitel 5] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Einführung in Udemy Python3 + Application] 53. Wörterbuch der Schlüsselwortargumente
Webanwendung erstellt mit Python3.4 + Django (Teil.1 Umgebungskonstruktion)
[Kapitel 3] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Python] Einführung in das WEB-Scraping | Zusammenfassung der Methoden, die mit dem Webdriver verwendet werden können
[Für Anfänger] Web-Scraping mit Python "Greifen Sie auf die URL auf der Seite zu, um den Inhalt abzurufen."
[Kapitel 2] Einführung in Python mit 100 Klopfen Sprachverarbeitung
Anfänger versuchen mit Django + React + Bootstrap (1) eine Online-Webanwendung für Othello zu erstellen.
[Cloud 9] Versuchen Sie, eine Umgebung mit Django 1.11 von Python 3.4 zu erstellen, ohne auch nur 1 mm zu verstehen
[Einführung in Udemy Python3 + Application] 52. Tapple von Positionsargumenten
Erläuterung zum NoReverseMatch-Fehler in "Python Django Super Introduction"
Web-Scraping für Anfänger mit Python (4) --2 Scraping auf Cloud Shell
[Kapitel 4] Einführung in Python mit 100 Klopfen Sprachverarbeitung
[Einführung in die Udemy Python3 + -Anwendung] 42. für Anweisung, break-Anweisung und continue-Anweisung
■ Kaggle-Übung für Anfänger - Einführung von Python - von Google Colaboratory
[Erklärung für Anfänger] Einführung in die Faltverarbeitung (erklärt in TensorFlow)
[Erklärung für Anfänger] Einführung in die Pooling-Verarbeitung (erklärt in TensorFlow)
[IPdb] Anfänger in der Webentwicklung haben versucht, das Debuggen mit Python zusammenzufassen
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Einführung in Python für VBA-Benutzer - Aufrufen von Python aus Excel mit xlwings-
Webanwendung mit Python3.3.1 + Flasche (1) - Ändern Sie die Vorlagen-Engine in jinja2
[Raspi4; Einführung in den Sound] Stabile Aufzeichnung der Toneingabe mit Python ♪
[Python] Einführung in die Diagrammerstellung mit Corona-Virendaten [Für Anfänger]
(Für Anfänger) Versuchen Sie, mit Django eine einfache Web-API zu erstellen
[Einführung in Udemy Python3 + Application] 51. Seien Sie vorsichtig mit Standardargumenten
Einführung in Python Django (2) Win
Erstellen Sie eine Webanwendung mit Django
Webanwendung mit Python + Flask ② ③
~ Tipps für Python-Anfänger mit Liebe von Pythonista ③ ~
Einführung in Python For, While
Webanwendung mit Python + Flask ④
[Python] Was ist ein Slice? Eine leicht verständliche Erklärung zur Verwendung anhand eines konkreten Beispiels
IPynb-Bewertungssystem mit TA von Introduction to Programming (Python)
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.