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.
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
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
Die neuen Daten wurden erfolgreich gespeichert!
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