J'étudie juste Django d'Udemy et je joue avec, donc j'améliore l'application TODO du cours Django d'Udemy et le SNS interne à ma manière, donc je pense que le niveau est le même. [Commentaire détaillé! ] Maîtrisez les bases de Django et créez 3 applications!
Par conséquent, je le fais avec l'idée de faire quelque chose qui bouge complètement hors de vue, comme l'aspect pratique. Je pense qu'il y a beaucoup de points difficiles à comprendre dans le premier article, mais j'apprécierais que vous puissiez veiller avec des yeux chaleureux.
Lors de l'enregistrement des données d'image dans Django, il était très gênant de taper les données une par une, de sélectionner l'image, etc., donc je me demandais s'il y avait un bon moyen.
$ python manage.py runscript <nom de fichier>
J'ai appris que les fichiers python peuvent être exécutés avec et j'ai décidé de l'utiliser.
Je n'entrerai pas dans les détails sur runscript, mais cela exécutera la méthode run de n'importe quel fichier du répertoire scripts dans le répertoire où manage.py se trouve.
Puisque nous avons créé un fichier appelé add_dummies.py ici, add_dummies.py sera inclus dans
Comme il était difficile de sélectionner une image, j'ai décidé de générer une image en me référant à l'article suivant. Créez une image factice avec Python + PIL.
Le code que j'ai réellement utilisé pour le générer est ci-dessous. Le seul endroit que j'ai arrangé est que la couleur et la taille de l'image sont modifiées avec des nombres aléatoires afin que l'image puisse être facilement identifiée.
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 des couleurs rouge, vert, bleu, noir et blanc
def make_image(N):
"""
Créer un fichier image
La valeur de retour est le nom du fichier
"""
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
Cela générera n fichiers image et enregistrera les images à l'emplacement ./media/<image file>
comme vu depuis le répertoire où se trouve manage.py.
De plus, le modèle de cette application est défini comme suit.
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="")
J'ai utilisé la fonction Faker parce que je voulais aussi enregistrer d'autres éléments, mais je vais l'omettre car ce n'est pas le sujet de cette fois. Ajoutez la méthode d'exécution suivante à add_dummies.py pour l'exécuter. Maintenant que nous devons également ajouter d'autres éléments:
add_dummies.py
from book.models import RecommendedBook
import random,string
from faker import Faker
fakegen=Faker("ja_JP")
genres=["Livre technique","Anglais","Math","roman","Impressionné","agréable"]#Définissez le genre sur une liste appropriée et récupérez-le au hasard plus tard
fakegen = Faker()
def run():
N=5#Créer environ 5 données
for entry in range(N):
imgfile=make_image(entry)
bookGenre=random.choice(genres)+" "+random.choice(genres)#Définissez deux genres
dummy=RecommendedBook(author=fakegen.name(), bookTitle=fakegen.word(),
content=fakegen.text(), genre=bookGenre,
bookImage=imgfile
)
dummy.save()
Lorsque vous l'exécutez et regardez dans l'écran de gestion
Les nouvelles données ont été enregistrées avec succès!
C'est tout! ~~ Je l'ai cherché moi-même, mais je n'ai pas trouvé de bonne méthode, donc cela s'est avéré être une méthode tellement boueuse. ~~ Je voudrais vous présenter la compatibilité ascendante de cet article ci-dessous. Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
De plus, comme il est relativement lent d'enregistrer les données car elles sont tournées dans une boucle for, peu importe si le nombre de boucles est petit, mais s'il augmente dans une certaine mesure, cela prendra un temps considérable. J'ai pensé que c'était un problème. Je vous serais reconnaissant si vous pouviez m'apprendre: "Il existe un moyen de rendre les choses plus faciles!" "Cela le rendra plus rapide!" Pour le moment, mettez la page github qui contient le code de cet article.
Merci d'avoir lu jusqu'au bout!
Recommended Posts