Plusieurs vues intégrées de Django sont documentées dans Écriture de vues ainsi qu’à divers autres endroits de la documentation.
Il est possible que vous souhaitiez que Django serve aussi d’autres fichiers que les fichiers statiques du projet lors de la phase de développement local. La vue serve() peut être utilisée pour servir le contenu de n’importe quel répertoire. (Cette vue n’est pas suffisamment robuste pour une utilisation en production et ne devrait être utilisée que pour aider au développement ; ces fichiers devraient être servis en production par un serveur Web frontal réel.)
L’exemple le plus probable concerne les fichiers téléversés par les utilisateurs dans MEDIA_ROOT. django.contrib.staticfiles est prévu pour les fichiers statiques en ne comporte pas de gestion intégrée pour les fichiers téléversés par les utilisateurs, mais vous pouvez demander à Django de servir le contenu de MEDIA_ROOT an ajoutant quelque chose comme ceci à votre configuration d’URL :
from django.conf import settings
# ... the rest of your URLconf goes here ...
if settings.DEBUG:
urlpatterns += patterns('',
url(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.MEDIA_ROOT,
}),
)
Notez que cet extrait suppose que votre réglage MEDIA_URL contient la valeur '/media/'. Ce code appelle la vue serve() en lui transmettant le chemin capturé par la configuration d’URL et le paramètre (obligatoire) document_root.
Comme il peut vite devenir pesant de définir ce motif d’URL, Django est livré avec une petite fonction utilitaire d’URL nommée static(), qui accepte en paramètre le préfixe (tel que MEDIA_URL) et un chemin vers une vue en syntaxe pointée, tel que 'django.views.static.serve'. Tout autre paramètre de fonction est transmis à la vue de manière transparente.
Jan 13, 2016