J'essaie de créer ma page Web personnelle. Donc, en ce sens, je devais mettre dans le panneau de recommandations, qui contient des recommandations d'anciens employés / amis, etc.

Je prévoyais donc de créer un modèle dans django avec les attributs suivants: -

  1. nom de l'auteur
  2. author_designation
  3. author_image
  4. commentaires_auteurs

J'ai les questions suivantes dans mon esprit liées à la partie image: -

  1. Est-ce une bonne pratique de stocker des images dans la base de données principale? (La base de données est pour les informations structurées de ce que je comprends)

  2. Comment stocker des images pour que la mise à l'échelle du contenu et sa gestion deviennent vraiment faciles?

3
Harkirat Saluja 7 mars 2016 à 15:54

3 réponses

Meilleure réponse

Non, ce n'est pas bon, d'autant plus qu'il évolue.

https://docs.djangoproject.com/en/1.9/howto/static-files/deployment/#serving-static-files-in-production

Lorsque vous pensez à ce qui se passe dans le cycle de demande / réponse, vous saurez que vos scripts python sont interprétés par certains modules. Donc, si vous utilisez apache par exemple, mod_wsgi pourrait faire ce travail. Habituellement, vous ne voulez pas que vos fichiers statiques soient servis par ce même processus car ce n'est pas très efficace, les fichiers statiques étant statiques. Dans un scénario typique, vous aurez besoin d'un serveur Web très rapide, par exemple, nginx servant votre contenu statique sans "réfléchir". Cette délégation donne une conception très efficace et évolutive. Comme l'a dit @Anentropic, vous pouvez choisir d'héberger un média statique sur un CDN.

1
Nikita 7 mars 2016 à 19:00

En bref: non.

Utilisez le ImageField intégré de Django et demandez à votre serveur Web de servir les fichiers à partir du disque.

Vous pouvez également utiliser ImageField avec un backend de stockage personnalisé tel que django-storages et mettez les fichiers par exemple Amazon S3 et faites-les servir à partir de là (en ajoutant peut-être quelque chose comme CloudFront CDN à l'avant)

2
Anentropic 7 mars 2016 à 13:20

La meilleure façon de le faire est de stocker les images sur votre serveur dans un dossier général spécifique pour ces images. Après cela, vous stockez une chaîne dans votre base de données avec le chemin d'accès à l'image que vous souhaitez charger. Ce sera un moyen plus efficace de le faire.

1
acostela 7 mars 2016 à 13:02