[PYTHON] Generieren und veröffentlichen Sie Dummy-Bilddaten mit Django

Einführung

Ich lerne gerade Django von Udemy und spiele damit, also verbessere ich die TODO-App von Udemys Django-Kurs und den internen SNS auf meine eigene Weise, also denke ich, dass das Level das gleiche ist. [Gründlicher Kommentar! ] Beherrsche die Grundlagen von Django und erstelle 3 Apps!

Deshalb mache ich es mit der Idee, etwas zu machen, das sich völlig außer Sichtweite bewegt, wie zum Beispiel die Praktikabilität. Ich denke, es gibt viele Punkte, die im ersten Artikel schwer zu verstehen sind, aber ich würde es begrüßen, wenn Sie mit warmen Augen darüber wachen könnten.

Was du machen willst

Bei der Registrierung von Bilddaten in Django war es sehr mühsam, die Daten einzeln einzugeben, das Bild auszuwählen usw. Ich fragte mich, ob es einen guten Weg gab.

$ python manage.py runscript <Dateiname>

Ich habe gelernt, dass Python-Dateien mit ausgeführt werden können, und habe mich dafür entschieden. Ich werde nicht auf Details zu Runscript eingehen, aber dadurch wird die Ausführungsmethode einer Datei im Skriptverzeichnis in dem Verzeichnis ausgeführt, in dem sich manage.py befindet. Da wir hier eine Datei mit dem Namen add_dummies.py erstellt haben, wird add_dummies.py in enthalten sein.

Bilderzeugung

Da es schwierig war, ein Bild auszuwählen, habe ich mich entschlossen, ein Bild unter Bezugnahme auf den folgenden Artikel zu generieren. Erstellen Sie ein Dummy-Bild mit Python + PIL.

Der Code, den ich tatsächlich verwendet habe, um ihn zu generieren, ist unten. Der einzige Ort, den ich arrangiert habe, ist, dass die Farbe und Größe des Bildes mit Zufallszahlen geändert werden, damit das Bild leicht identifiziert werden kann.

add_dummyies.py


from PIL import Image,ImageDraw, ImageFont
import random
colors = [(255,0,0), (0,255,0), (0,0,255),(0,0,0),(255,255,255)]#Liste der Farben Rot, Grün, Blau, Schwarz und Weiß

def make_image(N):
    """
Bilddatei erstellen
Der Rückgabewert ist der Name der Datei
    """
    screen = (200+random.randint(0,100), 200+random.randint(0,100))
    pen_color=random.choice(colors)
    bg_color=random.choice(colors)
    img = Image.new('RGB', screen, bg_color)
    x, y = img.size
    u = x - 1
    v = y - 1
    draw = ImageDraw.Draw(img)
    draw.line((0, 0, u, 0), pen_color)
    draw.line((0, 0, u, v), pen_color)
    draw.line((0, 0, 0, v), pen_color)
    draw.line((u, 0, 0, v), pen_color)
    draw.line((u, 0, u, v), pen_color)
    draw.line((0, v, u, v), pen_color)
    filename="/sample_{}.jpg ".format(N)
    img.save("media"+filename)
    return filename

Dadurch werden n Bilddateien generiert und die Bilder am Speicherort ./media/<image file> gespeichert, wie aus dem Verzeichnis hervorgeht, in dem sich manage.py befindet.

Darüber hinaus ist das Modell dieser App wie folgt definiert.

models.py


from django.db import models

class RecommendedBook(models.Model):
    author = models.CharField(max_length=100)
    bookTitle = models.CharField(max_length=50)
    content = models.TextField()
    bookImage=models.ImageField(upload_to="")
    genre = models.CharField(max_length=200, null=True, blank=True, default="")
    good = models.IntegerField(null=True, blank=True,default=0)
    goodtext = models.CharField(max_length=500,null=True,blank=True, default="")
    notGood = models.IntegerField(null=True, blank=True,default=0)
    notGoodtext = models.CharField(max_length=500,null=True,blank=True, default="")

Ich habe die Faker-Funktion verwendet, weil ich auch andere Elemente speichern wollte, aber ich werde das weglassen, weil es nicht das Thema dieser Zeit ist. Fügen Sie add_dummies.py die folgende Ausführungsmethode hinzu, um sie auszuführen. Jetzt müssen wir noch weitere Elemente hinzufügen:

add_dummies.py



from book.models import RecommendedBook
import random,string
from faker import Faker
fakegen=Faker("ja_JP")

genres=["Technisches Buch","Englisch","Mathematik","Roman","Beeindruckt","angenehm"]#Stellen Sie das Genre auf eine geeignete Liste ein und rufen Sie es später zufällig ab

fakegen = Faker()

def run():
    N=5#Erstellen Sie ungefähr 5 Daten
    for entry in range(N):
        imgfile=make_image(entry)
        bookGenre=random.choice(genres)+" "+random.choice(genres)#Stellen Sie zwei Genres ein
        dummy=RecommendedBook(author=fakegen.name(), bookTitle=fakegen.word(),
                              content=fakegen.text(), genre=bookGenre,
                              bookImage=imgfile
                              )
        dummy.save()

Wenn Sie es ausführen und in den Verwaltungsbildschirm schauen

スクリーンショット 2020-05-02 17.38.52.png

Die neuen Daten wurden erfolgreich gespeichert!

das Ende

Das ist es! ~~ Ich habe selbst recherchiert, aber ich konnte keine gute Methode finden, also stellte sich heraus, dass es eine so schlammige Methode war. ~~ Ich möchte die Aufwärtskompatibilität dieses Artikels unten vorstellen. In Python ohne Dummy-Bilddatei in Django erstellen und Bild-Upload testen

Da das Registrieren von Daten relativ langsam ist, weil sie in einer for-Schleife gedreht werden, spielt es keine große Rolle, ob die Anzahl der Schleifen gering ist, aber wenn sie bis zu einem gewissen Grad zunimmt, dauert es eine beträchtliche Zeit. Ich dachte, es sei ein Problem. Ich wäre Ihnen dankbar, wenn Sie mir beibringen könnten: "Es gibt einen Weg, es einfacher zu machen!" "Dies wird es schneller machen!" Fügen Sie vorerst die Github-Seite ein, die den Code für diesen Artikel enthält.

Vielen Dank für das Lesen bis zum Ende!

Recommended Posts

Generieren und veröffentlichen Sie Dummy-Bilddaten mit Django
POST das Bild mit json und erhalte es mit der Flasche
Verwenden Sie Django, um Tweet-Daten zu speichern
HTTPS mit Django und Let's Encrypt
Generieren Sie automatisch ein Modellbeziehungsdiagramm mit Django
Generieren Sie gefälschte Tabellendaten mit GAN
Datenpipeline-Aufbau mit Python und Luigi
Erstellen Sie mit Python + PIL ein Dummy-Image.
Generieren Sie japanische Testdaten mit Python faker
Fügen Sie Ihre eigenen Bilddaten in Deep Learning ein und spielen Sie damit
POST verschieden mit Python und empfange mit Flask
CRUD POST mit Nuxt & Django REST Framework
Lassen Sie uns ein Bilderkennungsmodell mit Ihren eigenen Daten erstellen und spielen!
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Teilen Sie Daten mit Django (2) in projektähnliche Einheiten.
Senden und Empfangen von Bilddaten als JSON in Python über das Netzwerk
Versuchen Sie, ein Bild mit Entfremdung zu erzeugen
Ramen-Kartenerstellung mit Scrapy und Django
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
Erstellen Sie eine Datenanalyseumgebung, die die GitHub-Authentifizierung und Django mit JupyterHub verbindet
So generieren Sie automatisch ein API-Dokument mit dem Django REST-Framework und POST vom Dokumentbildschirm
Bildtext und Post to Slack (Python Slackbot)
Teilen Sie Daten mit Django (3) in projektähnliche Einheiten.
Django: User Agent aufzeichnen und mit Admin verwalten
Implementieren Sie "Data Visualization Design # 3" mit Pandas und Matplotlib
Visualisieren Sie Daten interaktiv mit TreasureData, Pandas und Jupyter.
Teilen Sie Daten mit Django in projektähnliche Einheiten
Datenbereinigung 3 Verwendung von OpenCV und Vorverarbeitung von Bilddaten
Zeigen Sie das Bild nach der Datenerweiterung mit Pytorch an
Entwickeln Sie eine Web-API, die in DB gespeicherte Daten mit Django und SQLite zurückgibt
Internationalisierung mit Django
CRUD mit Django
Ich wollte nur die Daten des gewünschten Datums und der gewünschten Uhrzeit mit Django extrahieren
Hinweise zur HDR- und RAW-Bildverarbeitung mit Python
Lernen von Beziehungsdaten mit Numpy und NetworkX (Spektralclustering)
Erstellen Sie Dummy-Daten mit den NumPy- und Faker-Paketen von Python
Deep Learning Bildanalyse beginnend mit Kaggle und Keras
Generieren Sie aus Textdaten ein vertikales Bild eines Romans
Übersicht und Tipps von Seaborn mit statistischer Datenvisualisierung
Geschichte der Bildanalyse von PDF-Dateien und Datenextraktion
[PyTorch Tutorial ⑦] Visualisieren von Modellen, Daten und Training mit Tensorboard
Erhalten Sie Kommentare und Abonnenten mit der YouTube-Daten-API
Fordern Sie die Bildklassifizierung mit TensorFlow2 + Keras 3 heraus ~ Visualisieren Sie MNIST-Daten ~
Erstellen Sie mit Django dynamisch Tabellen im Schema und generieren Sie dynamisch Modelle
Untersuchen Sie den Java- und Python-Datenaustausch mit Apache Arrow
Generieren Sie Fibonacci-Zahlen mit Python-Closures, Iteratoren und Generatoren
Sortieren Sie die Postdaten in umgekehrter Reihenfolge mit Djangos ListView
POST das ausgewählte Bild auf der Website mit mehrteiligen / Formulardaten und speichere es in Amazon S3! !!
Geben Sie die Bilddaten mit Flask of Python zurück und zeichnen Sie sie in das Canvas-Element von HTML
Ich habe meine Qiita-Post-Daten automatisch mit Raspberry Pi gesammelt und regelmäßig mit Slack benachrichtigt