Lien vers un fichier static
Bonsoir,
Je n'ai jamais vraiment utilisé les fichiers statics.
Dans mon application ideas j'ai un dossier static avec un sous dossier others et un fichier previ.xlsx.

En gros je veux faire un truc du genre:
<a href="ideas/static/others/previ.xlsx" target="_blank">Télécharger le fichier</a>
J'ai essayé avec un truc du genre (j'ai regardé dans la documentation) mais ça ne va pas :
{% static 'my_app/example.xlsx' %}
Quelle est la bonne manière de faire ça ?
Merci d'avance
Hello Gab,
les fichiers static sont les fichiers du site qui ne bougent pas comme le favicon, les logos etc...
Si je ne me trompe pas ici c'est plutôt du media dont tu as besoin. Vois le comme les fichiers static mais "dynamique" ah ah.
Dans ton settings.py tu dois ajouter:
STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'mediafiles'
Dans ton fichier urls.py:
urlpatterns = [
path('admin/', admin.site.urls),
...
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
et enfin dans ton modèle:
class Joueur(models.Model):
nom = models.CharField(max_length=50)
prenom = models.CharField(max_length=50)
...
joueur_fiche = models.FileField(upload_to='fiches_joueurs' ,null=True, blank=True)
Tu pourras ainsi proposer un url pour tes fichiers (exemple si c'est pythonanywhere)
<a href="https://mysite.pythonanywhere.com//ideas/static/others/previ.xlsx" target="_blank">Télécharger le fichier</a>
Si tu es sur pythonanywhere il ne faut pas oublier dans le dashboard de rensigner le chemin des fichiers static: https://help.pythonanywhere.com/pages/DjangoStaticFiles/
Aussi ne pas oublier de faire un
python manage.py collectstatic
J'espère que ça t'aidera.
Tout est fait déjà sauf
<a href="https://mysite.pythonanywhere.com//ideas/static/others/previ.xlsx" target="_blank">Télécharger le fichier</a>
Pour l'urls.py j'avais fait ça :
urlpatterns = [
path('admin/', admin.site.urls),
path('', index, name="index"),
path('account/', include('accounts.urls')),
path('verification/', include('verify_email.urls')),
path('ideas/', include('ideas.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Donc je mets le chemin en entier directement alors. Je pensais qu'il y avait une façon de faire avec une balise {% static et url du fichier excel %}. Mais en fait je cherchais trop compliqué ! lol
Merci en tous cas ! ^^
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte